进口,罐子和心脏疼痛

时间:2012-07-28 13:01:44

标签: java class terminal package pico

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

所以,在Eclipse中,我非常了解如何导入,添加jar编译等。当我开始使用pico并使用终端(我正在运行ubuntu)编译所有进行得非常好,直到我想要使用包。我花了两天时间把头发拉出来,因为无论我做什么,我都无法理解。

我正在尝试使用acm.jar(我在Eclipse中有很多次)然而,当我从终端的javac进行编译时,我完全迷失了如何使用它。

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

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

2 个答案:

答案 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在编译/执行过程中查找所需的任何外部库/类的地方集合。

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

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

    运行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使用;