Java 环境搭建

2015-06-19 language

简单记录一下 Linux 下的 Java 环境搭建,以及使用方法。

简介

可以通过 rpm -qa | grep java 查看是否已经安装 java 包,CentOS 默认安装的是 openjdk,常用的 openjdkopenjdk-headlesstzdata-java 已经安装,通过 java -version 查看版本号。

将会将代码安装在 /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.65-2.5.1.2.el7_0.x86_64/jre/ 目录下。

可以删除 openjdk 然后安装 Sun,不太建议,安装 devel 包,含有 jar jarsigner javac javadoc javah javap 等软件。

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello! World!");
    }
}

文件名必须与类相同,即 HelloWorld.java ,通过 javac HelloWorld.java 编译,java HelloWorld 运行。

JAR 包

Java Archive File, JAR 包是 Java 的一种文档格式,实际上就是 ZIP 文件,唯一的区别就是在 JAR 文件的内容中,包含了一个 META-INF/MANIFEST.MF 文件,该文件是在生成 JAR 时自动创建。

当包含一个 jar 包时,如果不知道所包含的类,可以通过解压包查看。

Java 程序由若干个 .class 文件组成的,这些文件必须根据它们所属的包不同而分级分目录存放,运行前需要把所有用到的包的根目录指定给 CLASSPATH 环境变量或者 java 命令的 -cp 参数。

$ tree
$ jar -cvf hello.jar helloworld
$ jar -tvf hello.jar                 // 查看JAR包的详细信息
$ jar -xf hello.jar                  // 解压

在 eclipse 可以直接通过 export 打包。

很多 Java 内部函数在 java-x.x.x-openjdk-headless 中定义。

$ rpm -ql java-1.7.0-openjdk-headless-1.7.0.95-2.6.4.0.el7_2.x86_64 | grep -P '\.jar$' > /tmp/1
$ for i in `cat /tmp/1`; do ls -alh $i; done                                               # 部分文件是符号链接
$ vi /tmp/1                                                                                # 去除符号链接
$ for i in `cat /tmp/1`; do echo $i && jar -tvf $i | grep DriverManager; done              # 查看相应的接口

安装 Eclipse

另一个比较好用的开发环境是 IDEA

安装

在 CentOS 中,可以通过如下步骤安装。

  1. www.eclipse.org 下载最新的 Eclipse,通常为 eclipse-xxxx-linux-gtk-x86_64.tar.gz
  2. 解压到 /opt 目录下,su - && tar -xvzf eclipse-xxx-linux-gtk.tar.gz -C /opt && ln -s /usr/eclipse/eclipse /usr/bin/eclipse,此时可以在 Terminal 中通过 eclipse 命令启动。
  3. 添加文件 vi /usr/share/applications/eclipse-4.4.desktop,于是可在左上角找到 Eclipse 。
[Desktop Entry]
Encoding=UTF-8
Name=Eclipse 4.4.1
Comment=Eclipse Luna
Exec=/usr/bin/eclipse
Icon=/opt/eclipse/icon.xpm
Categories=Application;Development;Java;IDE
Version=1.0
Type=Application
Terminal=0

maven 工程创建需要一个 groupid 和 artifactid,两者的组合需要全局唯一,一般 groupid 是包名,artifactid 为工程名 (会在 Eclipse 中展示)。

HelloWorld

可以通过如下步骤简单创建一个 Java 项目。

1. 新建 Java 项目

选择 "File → New → Project...",选择 "Java Project",便打开了 "New Java Project" 向导。在 "Project name" 中填入 "HelloWorld",直接点击 "Finish" 按钮。

2. 新建一个 Package

值得注意的是包名和工程名一般都是小写开头,而 Java 类名则是大写开头。选择 "File → New → Package",在 "New Java Package" 向导中的 Name 框中输入 "test",直接 finish。

3. 新建 HelloWorldApp 类

选择 "File → New → Class",在 "New Java Class" 向导中的 Name 框中输入 "HelloWorldApp",并且在 "public static void main(String[] args)" 选项前面打上勾;在 Source floder 中选择上步填写的项目。

4. 添加打印语句

在 main 中添加如下内容。

System.out.println("Hello World!");

5. 运行 Java 程序

按下 "Run → Run...",Eclipse 会弹出运行设置向导,选择 "Java Application"

其它

然后可以右健点击对应文件,"Export... → Runnable JAR file",在 Launch configuration 中选择对应的项目,并在 Library handling 中选择 Extract required libraries into generated JAR

接着通过 java -jar helloworld.jar 就可以运行。

安装 JDBC

在 CentOS 中可以通过 yum install mysql-connector-java 安装,此时会保存在 /usr/share/java/mysql-connector-java.jar ,如果要使用这个包需要包含全路径,可以设置 CLASSPATH 环境变量,或者:

java -classpath .:/usr/share/java/mysql-connector-java.jar GetConnection

在 Eclipse 中可通过 [右健] -> Properties -> Java Build Path -> Libraries -> Add External JARs

可以从 MySQL 官网下载 MySQL Connectors

安装 Maven

在 CentOS 中也可以 yum install maven 安装,或者从官网直接下载源码。

maven.apache.org 下载 Maven-bin ,解压,可以放置到任何目录下;新建符号连接,方便升级 ln -s apache-maven-3.2.3 apache-maven

~/.bashrc 文件中添加环境变量,然后通过 source ~/.bashrc 更新:

export M2_HOME=/home/andy/Workspace/java/tools/apache-maven
PATH=$PATH:$M2_HOME/bin

通过执行 mvn -v 查看是否安装成功,此时会先是 Java 的版本号等信息。

在 eclipse 中设置 maven,Window -> Preference -> Maven -> {Installations, User Settings},配置文件可以统一使用集团的,可以设置全局以及用户的,此时会自动生成 repository 目录。

新建工程

可以通过如下的方法在 Eclipse 中创建一个最简单的 Maven 工程,步骤如下 File -> New -> Project... -> Maven[Maven Project] -> Next... -> 选择 quickstart 即可。

然后点击运行,可以看到一个最简单的 Hello World 程序,如果出现 Missing artifact,修改后可以通过 [右键] -> Maven -> Update Project... 即可。

创建 mvn 工程,也可以执行如下命令创建一个 maven 工程,然后导入。

$ mvn archetype:generate -DgroupId=abc -DartifactId=hello \
    -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false