我有一个Java src文件夹,其中存储了我的.java文件。然后我使用Terminal编译它们并最终在同一目录中获取.class文件。这并不一定会让我烦恼,但我从来没有见过这样做过的专业。
按照专业惯例(如果存在),在项目目录的哪个文件夹中应该存储已编译的.class文件?
答案 0 :(得分:7)
如果您不熟悉它,您应该查看Java classpath的主题。当我第一次开始用Java编程时,我记得发现这一点令人困惑。
Java中有.class文件的定义搜索路径;当您运行设置类路径的java -cp blahblahblah
时。 java -jar blahblahblah.jar
打开JAR file,.jar文件的清单可能会指定类路径。默认的类路径位于当前目录中。
通常,您将Java类放在文件系统中的分层目录结构中的包中,在这种情况下,Java编译器也会将.class
个文件放在相应的结构中。
如果从命令行运行javac
,-d
argument指定.class
个文件的目标根目录。
一个典型的项目看起来像这样,假设你的包被称为com.example.foo
,它包含Foo.java和Bar.java:
project_dir/
src/
com/
example/
foo/
Foo.java
Bar.java
bin/
com/
example
foo/
Foo.class
Bar.class
java编译器将以-d bin
作为目标目录执行,它将创建与.class
文件对应的.java
个文件。但目的地不必称为bin
;如果您愿意,可以将其称为Freddy
或dumbass
,但这可能会让以前习惯bin
或build
的人感到困惑。
大多数情况下,当Java程序或库构建时,.class
文件只是构建.jar文件的临时步骤(基本上只是带有.jar
扩展名的.zip格式,包含.class文件和一些元数据),当你实际运行它们时,如果你把它作为类路径的一部分包含在内,它将使用.jar文件。