【发布时间】:2017-04-18 08:38:15
【问题描述】:
我正在尝试使用来自http://algs4.cs.princeton.edu/code/ 的 jar 文件。我已经下载了 jar 文件,将它放在 CLASSPATH 中,但每次我尝试在命令行中运行我的程序时,我都会收到消息“包不存在”。
jar文件是algs4.jar
在网站上说“截至 2015 年 8 月 17 日,algs4.jar 的“默认包”版本已被“命名包”版本替换。要访问 algs4.jar 中的类,您需要使用如下导入语句:
import edu.princeton.cs.algs4.MinPQ;
import edu.princeton.cs.algs4.StdIn;
" 我认为这是主要问题,因为我不太明白他们在说什么(这是我第一次使用 jar 文件)
代码(二分查找):
import edu.princeton.cs.algs4.StdIn;
import edu.princeton.cs.algs4.StdOut;
import edu.princeton.cs.algs4.In;
import java.util.Arrays;
public class BinarySearch
{
public static int rank(int key, int[] a)
{ // Array must be sorted.
int lo = 0;
int hi = a.length - 1;
while (lo <= hi)
{ // Key is in a[lo..hi] or not present.
int mid = lo + (hi - lo) / 2;
if (key < a[mid]) hi = mid - 1;
else if (key > a[mid]) lo = mid + 1;
else return mid;
}
return -1;
}
public static void main(String[] args)
{
int[] whitelist = In.readInts(args[0]);
Arrays.sort(whitelist);
while (!StdIn.isEmpty())
{ // Read key, print if not in whitelist.
int key = StdIn.readInt();
if (rank(key, whitelist) < 0)
StdOut.println(key);
}
}
}
编辑: 我使用的命令:Javac -cp .;edu.princeton.cs.algs4.jar BinarySearch.java
jar 文件是 algs4.jar 不是 edu.princeton.cs.algs4.jar
【问题讨论】:
-
jar 文件是 zip 文件。打开它,看看你里面有没有这个包裹。请注意,过渡到新的包结构不会神奇地发生。如果您有一个没有该结构的旧 jar,则需要下载较新的 jar。您还需要告诉我们您是如何尝试编译和运行代码的。
-
.jar 文件本身是名为
algs4.jar还是实际文件名是edu.princeton.cs.algs4.jar? -
jar 文件被命名为 algs4.jar 在网站上它说“截至 2015 年 8 月 17 日,algs4.jar 的“默认包”版本已替换为“命名包”版本。要访问 algs4.jar 中的类,您需要使用如下导入语句:
-
如果jar文件名为algs4.jar,为什么要在classpath选项中添加edu.princeton.cs.algs4.jar呢?您正在传递一个非退出文件的名称。