我在 Eclipse 中创建了一个项目,现在正在尝试确保 .java 文件从命令行编译。我一直在尝试使用包含所有 .java 文件的文件夹中的
javac *.java
进行编译。但是,由于从外部库 Joda-time 引用类,这会导致错误。我有 Eclipse 为该项目制作的以下 .classpath 文件,但不知道如何处理它。
<?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”文件夹内的包文件夹内。我应该将类路径文件和 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 编译器的默认目录是您的项目。对于命令行,它是源文件所在的文件夹。
因此,如果您的
Project
上有一个名为 Desktop
的项目,那么由于 Eclipse,Project\src
中源文件的默认目录是 C:\Users\UserName\Desktop\Project
,但是如果您使用命令行编译它,那么默认目录是C:\Users\UserName\Desktop\Project\src
。
要以编程方式获取当前默认目录,请使用以下命令:
System.out.println("System.getProperty ("user.dir")");
现在,如果您需要使用命令行编译,我建议您将
.jar
文件放在 src
文件夹中。
但是,我认为您不需要
.classpath
文件。 这里就是这样。