Java项目概览,编译与执行
我已经解释了如何 创建、编译和运行你的第一个Java应用程序 ,也学习了关于主方法的知识。学习的下一步就是了解Java项目的结构、Java代码是如何编译的,Java程序以及如何执行完成的。
Java源代码和类文件目录
一个简单的Java项目包含一个存有所有Java源文件的目录。Java文件通常不是直接存储在该源目录下,而是放在与包结构相匹配的子目录中。包只是一种将属于一起的源文件分组的方法。
源代码目录通常称为 src ,但这不是必须的。例如,如果你使用 Maven这个构建工具 ,那么通常目录结构是有所不同的,它的Java源代码存储在 src/main/Java 目录下(在你的项目根目录下)。
当你编译完所有的源代码后,编译器会将每个 .java 文件生成对应的 .class 文件。这个 .class 是 .java的编译后的版本。java文件,换句话说,.class 文件就是字节码文件。
JVM可以执行的是 .class的文件,而不能运行 .java文件。因此,需要正确的区别 .java 和 .class文件。编译器通常将编译后的 .class文件放入一个单独的目录中。这个目录通常被称为 classes,但同样这也不是一个硬性要求,它取决于你使用的构建工具或IDE等。
编译Java源代码
你可以用IDE直接编译Java源代码,或者,也可以使用Java SDK附带的Java编译器。 要在命令行里使用Java编译器编译Java源代码,可以执行以下操作:
- 打开一个命令行窗口
- 进入你的项目根目录下(注意不是源文件目录)
- 确保项目根目录包含了源代码目录和所依赖的类文件目录
- 输入如下命令
"c:\Program Files\Java\jdk1.8.0_25\bin\javac" src/myfirstapp/*.java -d classes
这条命令执行了 javac命令,该命令会编译 src/myfirstapp目录下的Java源代码。其中 \.java意思是告诉编译器,让它编译改目录下的所有 .java*后缀的文件。
myfirstapp目录是源代码根目录 src下的一个包。 如果在源代码根目录下有多个包,则必须多次运行Java编译器。Java IDE会自动将这些处理好,当然像Ant,Maven或者Gradle这些构建工具也会这样做。
运行编译好的Java代码
一旦编译器完成以上这些工作后,类文件目录将会存放着已经编译好 .class文件。源目录中的包结构(目录结构)将会保存在类目录下。你可以运行任何一个包含有一个main()方法的 .class文件。运行时,你可以选择在IDE里面直接运行,也可以使用命令行运行。如果使用命令行的话,可以参考下面的命令:
"c:\Program Files\Java\jdk1.8.0_25\bin\java" -cp classes myfirstapp.MyJavaApp
-cp classes这部分是告诉JVM你的所有类文件都存放在 classes目录下。这个也被叫做“类路径”。
最后一部分参数 myfirstapp.MyJavaApp是指定需要运行的类的名称。JVM需要知道完全限定的类名(包名加上类名)来确定 .class文件的位置。
当你运行这个类时,你的命令行应该有类似如下的输出显示:
D:\data\projects\my-first-java-app>"c:\Program Files\Java\jdk1.8.0_25\bin\java"
-cp classes myfirstapp.MyJavaApp
Hello World!
D:\data\projects\my-first-java-app>
注意,第一个命令不应该有换行符。我把它这样放只是为了更容易阅读。
好了。现在你已经知道如何编译和执行Java程序了! 正如前面提到的,这些操作使用IDE的话,可能更容易,但你可能不会在任何地方都有IDE来帮你完成这些工作,所以你应该学会如何通过Java SDK来完成这些操作。
下一篇: Java核心概念