首先让我首先说我是Java的新手,但是要让你知道新的东西;我开始阅读大量书籍,示例等,并在大约2个月前开始使用Eclipse编程Java。但是,我发现了一个非常酷的建议,关于使用记事本和终端进行编程。有点疯狂的新手去艰难的路线,但我喜欢挑战,我认真学习。
所以,在Eclipse中,我非常了解如何导入,添加jar编译等。当我开始使用pico并使用终端(我正在运行ubuntu)编译所有进行得非常好,直到我想要使用包。我花了两天时间把头发拉出来,因为无论我做什么,我都无法理解。
我正在尝试使用acm.jar(我在Eclipse中有很多次)然而,当我从终端的javac进行编译时,我完全迷失了如何使用它。
所以我要求的是,有人解释让我的jar文件工作的过程。
我用来创建我的java程序的是pico(或记事本)和终端中的javac。
答案 0 :(得分: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也很受欢迎,但我很讨厌它。
答案 1 :(得分:1)
要使用外部库编译和运行java类,必须将该库添加到类路径中。类路径是java编译器和JVM在编译/执行过程中查找所需的任何外部库/类的地方集合。
设置类路径可以通过两种方式完成:
运行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使用;