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

时间:2013-04-14 06:05:09

标签: java command-line compiler-construction classpath libraries

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

    <?xml version="1.0" encoding="UTF-8"?>
<classpath>
    <classpathentry kind="src" path="src"/>
    <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7"/>
    <classpathentry kind="lib" path="libs/joda-time-2.2.jar"/>
    <classpathentry kind="output" path="bin"/>
</classpath>

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

[edit]我正在使用Windows 7

2 个答案:

答案 0 :(得分:9)

根据您的.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项目使用这些工具在命令行和自动构建系统中构建其产品,持续集成等。

答案 1 :(得分:1)

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

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

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

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

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

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