3

我在 Eclipse 中创建了一个项目,现在正试图确保 .java 文件从命令行编译。我一直在尝试使用javac *.java包含所有 .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

4

2 回答 2

11

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

于 2013-04-14T07:03:08.987 回答
1

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

因此,如果ProjectDesktop的.Project\srcC:\Users\UserName\Desktop\ProjectC:\Users\UserName\Desktop\Project\src

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

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

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

但是,我认为您不需要该.classpath文件。就是它的样子。

于 2013-04-14T06:15:45.687 回答