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

问题描述 投票:0回答:2

我在 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

java command-line compilation classpath libraries
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 项目使用这些工具在命令行、自动构建系统、持续集成等中构建其产品。


1
投票

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
文件。 这里就是这样。

© www.soinside.com 2019 - 2024. All rights reserved.