我在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
答案 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就是这样。