如何将 jar 导入到我的 Java 程序中?

2022-09-04 21:45:00

我已经下载了两个罐子。我想导入一些包含的类。我该怎么做?

它适用于我的算法类。我已尝试按照以下网站上的说明进行操作,但无济于事。

http://algs4.cs.princeton.edu/code/

有一个OSX的安装程序(我正在运行Mountain Lion),据称它将jars添加到你的类路径中。不幸的是,它还安装了Java博士。我宁愿只使用Sublime和Terminal。我以为这很容易, 只是...

import java.stdlib;

在我的Percolation.java文件中,但是javac-ing该程序会产生“软件包stdlib不存在”,就像不存在一样

import stdlib;

我已通过以下方式手动将 stdlib.jar 和 algs4.jar 的位置添加到我的终端 CLASSPATH 中:

export CLASSPATH=$CLASSPATH:/Users/Michael/path/to/jar/algs4.jar:/Users/Michael/path/to/jar/algs4.jar
export CLASSPATH=$CLASSPATH:/Users/Michael/path/to/jar/stdlib.jar:/Users/Michael/path/to/jar/stdlib.jar

我也尝试过

javac -cp $CLASSPATH:/Users/Michael/path/to/jar/algs4.jar:/Users/Michael/path/to/jar/stdlib.jar Percolation.java

但我仍然得到一个

javac Percolation.java
Percolation.java:1: cannot find symbol
symbol  : class stdlib
location: package java
import java.stdlib;
       ^
Percolation.java:2: package java.algs4 does not exist
import java.algs4.WeightedQuickUnionUF;
             ^

这是怎么回事?

还有没有办法将这些值永久添加到OS X美洲狮的CLASSPATH中。我必须对每个新终端执行该命令。


答案 1

如果使用“终端”编译并启动程序,则在“终端”窗口中,首先设置:CLASSPATH

$ export CLASSPATH=$CLASSPATH:/Users/Michael/path/to/jar1.jar:/Users/Michael/path/to/jar2.jar

然后,您可以键入并查看是否引用了 jar。echo $CLASSPATH

现在,在同一个终端窗口中,使用 javac 编译你的类。如上所述的设置仅适用于当前终端窗口以及从该窗口启动的任何进程。CLASSPATH

或者,您可以将CLASSPATH

$ javac -cp $CLASSPATH:/Users/Michael/path/to/jar1.jar:/Users/Michael/path/to/jar2.jar MyClass.java

要在将来的终端会话中保留此内容,请将上面的行添加到主目录中的文件 .profile 中。CLASSPATHexport


答案 2

回答这个问题已经过时了,但也许这对普林斯顿算法课程的未来参与者有用。在环境中添加CLASSPATH后,java从包中获取类,但仍然会在导入命令时生成错误。您需要从源文件中删除导入algs4和stdlib,编译将顺利运行。

此解决方案适用于带有 zsh 的 Ubuntu 12.04。