1. 运行 Java 程序
JDK 的所有工作都要在终端窗口中键入命令来完成。下面演示如何在命令行编译并运行 Java 程序。
-
创建 Welcome.java 文件
public class Welcome { public static void main(String[] args) { String greeting = "Welcome to xiang017"; System.out.println(greeting); for (int i = 0; i < greeting.length(); i++) { System.out.print("="); } System.out.println(); } }
打开命令行窗口,进入 Welcome.java 文件所在的目录。
-
键入下面的命令:
javac Welcome.java
java Welcome下面展示在终端执的行结果:
C:\xiang017>javac Welcome.java C:\xiang017>java Welcome Welcome to xiang017 ===================
- javac 程序是一个 Java 编译器,它将文件 Welcome.java 编译成 Welcome.class。
- java 程序启动 Java 虚拟机,虚拟机执行编译器编译到类文件中的字节码。
2. 使用终端需要注意一下几点:
- 手动输入源程序,一定要注意大小写。类名和文件名一致。
- 编译时需要一个文件名(Welcome.java)。运行程序时,需要类名(Welcome),不要带扩展名 .class 或 .java。
- 如果看到如 Bad command or file name 或 java:command not found 之类的消息,就要检查 JDK 安装是否正确。
- 如果 javac 报告一个错误,指出无法找到 Welcome.java,就应该检查目录中是否存在这个文件。
- 运行程序后,如果收到关于 java.lang.NoClassDefFoundError 的错误消息,就应该仔细检查出问题的类名。
- 如果键入 java Welcome,而虚拟机没有找到 Welcome 类,就应该检查是否有人设置了系统的 CLASSPATH 环境变量(将这个变量设置为全局并不是提倡的做法,然而, Windows 中有些比较差的软件安装程序确实会这样做)。可以像设置 PATH 环境变量一样设置 CLASSPATH,不过这里将删除这个设置。
3. 编译源程序有两种方法:
定义 2 个源文件,分别为 Xiang017.java 和 Xiang017Test.java,内容如下:
public class Xiang017 {
public void show() {
System.out.println("xiang017 -> show()");
}
}
public class Xiang017Test{
public static void main(String[] args) {
Xiang017 x = new Xiang017();
x.show();
}
}
-
使用通配符调用 Java 编译器
javac Xiang017*.java
所有与通配符匹配的源文件都将被编译成类文件。
-
关联编译 Java 文件
javac Xiang017Test.java
并没有显示地编译 Xiang017.java。
当 Java 编译器发现 Xiang017Test.java 使用了 Xiang017 类时会查找名为 Xiang017.class 的文件。如果没有找到这个文件,就会自动地搜索 Xiang017.java,然后,对它进行编译。
更重要的是: 如果 Xiang017.java 版本较已有的 Xiang017.class 文件版本新,Java 编译器就会自动地重新编译这个文件。
3. 在 Windows 命令行窗口中运行UTF-8 编码的 Java 文件
在 Windows 命令行中执行 Java 源码时,如果文件中有中文,就会报错。原因是命令行是以 GBK 的格式执行源码文件,中文解析出现乱码,源码就无法编译运行了。
在添加环境变量 JAVA_TOOL_OPTIONS,将值设置为 “-Dfile.encoding=UTF-8”,就可以解决上述问题。
JAVA_TOOL_OPTIONS 环境变量
执行命令:
javac Xiang017.java
,
输出:
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8
这样就可以执行 utf-8 编码格式的 Java 源码文件,