3

首先,让我先说我对 Java 完全陌生,但要让你知道它有多新;大约 2 个月前,我开始阅读大量书籍、示例等,并开始使用 Eclipse 编写 Java。但是,我发现了一个关于使用记事本和终端进行编程的非常酷的建议。新手走艰难的道路有点疯狂,但我喜欢挑战,而且我对学习很认真。

因此,在 Eclipse 中,我非常了解如何导入、添加 jar 编译等。当我开始使用 pico 并使用终端(我正在运行 ubuntu)进行编译时,一切都非常顺利,直到我想使用包。我花了两天时间把头发拔出来,因为无论我做什么,我都无法弄清楚。

我正在尝试使用 acm.jar(我在 Eclipse 中使用过很多次),但是在从终端中的 javac 编译时,我完全不知道如何使用它。

所以我要求的是有人解释让我的 jar 文件工作的过程。

我用来创建我的java程序的只是终端中的pico(或记事本)和javac。

4

2 回答 2

1

假设您的源文件位于src. 假设您希望编译的类位于classes. 假设您的源文件引用的类位于lib/acm.jar

javac -cp classes:lib/acm.jar -d classes src/com/foo/bar/MyClass.java

将编译该类com.foo.bar.MyClass并将生成的MyClass.class文件放入classes/com/foo/bar.

您需要acm.jar类路径中的文件。这就是-cp lib/acm.jar选项的作用。您还需要classes在类路径中,因为 MyClass 可能引用了您已经编译并且在您的classes目录中的其他类。

要运行你的类,它必须在类路径中,acm.jar 也是:

java -cp classes:lib/acm.jar com.foo.bar.MyClass

如您所见,类路径包含 jar 文件,以及包含与包层次结构相匹配的文件夹层次结构的目录。

不过,我不会直接从命令行使用 javac。尝试使用真正的构建工具,它会一次构建所有类,例如 Gradle 或 Ant。Maven 也很受欢迎,但我非常讨厌它。

于 2012-07-28T13:15:14.397 回答
1

要使用外部库编译和运行 java 类,您必须将该库添加到类路径中。类路径是 java 编译器和 JVM 在编译/执行过程中查找所需的任何外部库/类的一组位置。

可以通过两种方式设置类路径:

  1. 设置一个名为 CLASSPATH 的环境变量
  2. 在运行 javac/java 时设置它

在运行 javac/java 时设置类路径如下:

javac -cp path/to/jar1:path/to/jar2:path/to/jar3:path/to/dirContainingClasses
yourMainClass.java

跑步:

java -cp path/to/jar1:path/to/jar2:path/to/jar3:path/to/dirContainingClasses
yourMainClass

: 在 Linux 上用作分隔符,供 windows 使用;

于 2012-07-28T13:17:03.843 回答