从命令行编译.java文件 – 外部库,类路径

我在Eclipse中创建了一个项目,现在我正在尝试确保从命令行编译.java文件。 我一直在尝试使用所有.java文件在文件夹中使用javac *.java进行编译。 但是,这会导致由于从外部库Joda-time引用类而导致的错误。 我有以下.classpath文件,Eclipse为项目制作但不知道如何处理它。

         

我尝试使用javac -classpath *.java编译,但这只会产生更多错误。 我的源文件位于’src’文件夹内的包文件夹中。 我在哪里放置我的classpath文件和我的joda-time-2.2.jar文件,以及如何编译所有内容?

[编辑]我正在使用Windows 7

根据您的.classpath文件判断,这可能有效:

 javac -d bin -cp libs/joda-time-2.2.jar src/your/package/*.java 

假设您在项目的目录中运行它。

-d标志告诉javac放置输出文件的位置。 -cp标志是-classpath的简写。 我根据您问题中的.classpath文件获取了这些参数。

通常,您可以通过阅读和理解javac输出中的错误来确定需要什么。 我打赌你有很多人一开始cannot find symbol错误,因为“符号”不在你的类路径上,所以javac不可能知道如何找到它们。

理解如何构建项目非常重要,它是程序员的基础知识和核心能力。

一旦你理解了如何像这样手动构建,我建议你研究一下构建工具,最好是Maven,或者Ant,这样可以更容易地在命令行上构建。 大多数Java项目使用这些工具在命令行和自动构建系统中构建其产品,持续集成等。

Eclipse基本上编译你的程序并将它们放在bin文件夹中。 而命令行将它们编译在同一目录中。 如果你正在编译src文件夹本身的文件,你会发现它现在充斥着.class文件。 Eclipse中Java编译器的默认目录是您的项目。 对于命令行,它是源文件所在的文件夹。

因此,如果你的Desktop上有一个名为Project ,那么因为Eclipse的Project\src的源文件的默认目录是C:\Users\UserName\Desktop\Project但是如果你用命令行编译它那么默认目录目录是C:\Users\UserName\Desktop\Project\src

要以编程方式获取当前默认目录,请使用以下命令:

System.out.println("System.getProperty ("user.dir")");

现在,如果您需要使用命令行进行编译,我建议您将.jar文件放在src文件夹中。

但是,我认为您不需要.classpath文件。 这就是它。