如何指出javac编译类应该去哪里?

时间:2010-03-21 12:12:42

标签: java javac

我正在编译我的源文件:

/home/bob/java/jdk1.5.0_06/bin/javac /home/bob/output/a.java

如何更改此命令行以在/home/bob/class生成类文件?

此外,如何为此设置环境变量(如JAVA_HOME,CLASSPATH,JAVAPATH)?

3 个答案:

答案 0 :(得分:6)

您可以使用-d标志指定输出目录:

$ javac -d /home/bob/class /home/bob/output/a.java

有关java编译器(javac)选项的完整列表,请选中this link out。

答案 1 :(得分:6)

有很多方法可以让javac创建一个类文件/home/bob/class/a.class。

有两个组件可以相互作用来确定生成javac的输出的位置:

“目标目录”的值,由-d选项设置。

该类在a.java'中定义的包属于'。这是由java源文件中的package语句设置的。

这是一个可能的值表,可以为您提供所需的结果,并附有一些关于它们的注释

destination directory (-d) |  package declaration |           comments
 /home/bob/classes         |       not set        | you probably have this
 /home/bob                 |       classes        | not recommended. See note 1.
 /home                     |     bob.classes      | not recommended.
 /                         |   home.bob.classes   | not recommended.

注1:虽然可以在包声明中添加任何值,但不建议这样做。建议的做法是使源文件的布局模仿类的包结构,相对于某些'package root'目录

以下是一些例子:

package declaration |   package root   | recommended path of source file
     z              | /home/b/project1 |   /home/b/project1/z/MyClass.java
    y.z             | /home/b/project1 |   /home/b/project1/y/z/MyClass.java

您引用的环境变量每个都有一个特定的“作业”,当您了解有关Java开发的更多信息时,它可能在执行某些任务时很有用。

CLASSPATH:假定为包根的文件夹/ jar文件列表,用于查找代码所依赖的类文件。 javac使用它将你的dot-java文件转换为点类文件,并由java用来运行你的java类/程序。如果使用javac / java的

JAVAPATH:假定为包根的文件夹/ jar文件列表,用于查找代码所依赖的java源文件。这是由javac命令使用的。如果使用javac的-sourcepath选项,则忽略此变量。

JAVA_HOME:这是java安装的'root目录。在你的问题中,/ home / bob / java / jdk1.5.0_06是JAVA_HOME。此变量通常由Java语言实现的程序使用。像javac和java这样的工具不使用JAVA_HOME,因为它们可以在执行时计算它。大多数时候,人们在他们项目的shell脚本中使用JAVA_HOME来启动他们的程序。

我不鼓励你使用你引用的环境变量。我已经做了大约10年的java编程,很少设置它们。我倾向于使用命令行选项。为什么?因为很容易忘记你的变量设置是什么,最终会出现你认为发生的事情,而不是。

答案 2 :(得分:3)

javac -d /home/bob/class Test.java

将生成的类文件放到指定的目录

/home/bob/class/Test.class

对于其他标志,您需要设置环境变量。 Check this