6

如上所示,我已将 algs4.jar 文件作为引用库导入。一切似乎都很好,但我似乎无法使用或访问库中的任何类。

是否有我缺少的导入声明?

图片参考:

请注意我如何尝试BinarySearch从引用的库中使用,但它没有为我提供使用或导入它的选项。

4

5 回答 5

7

我正在通过 Coursera 学习算法课程,该课程利用 algs4.jar 参考库。

问题:

您遇到的问题是参考库位于默认包中,而您访问参考库的源不在。

解决方案

您项目中的所有类都需要在默认包中,否则将无法识别参考库(位于默认包中)。您的项目类需要位于 src 目录中,并且不应在 .java 文件的开头声明包。此外,您还需要确保已将参考库添加到构建路径中。

于 2014-02-09T02:19:18.887 回答
6

我不确定,我没有尝试过这个。虽然有些解释。

这是一个标准库还是有人自己创建并给你的?

问题是类BinarySearchdefault包中。您将无法导入它。如果这个库是由您或您的任何朋友创建的,您需要让您的朋友将所有类从默认包移动到一个好的命名空间,然后重新创建 jar。

如果类可访问,ctr + shift + o则应导入该类。

于 2012-08-12T18:44:41.770 回答
2

请注意,jar 文件中的类都包含在默认包中。

如果您的类随后包含在一个包中,那么它们将无法直接访问。

我提交这个答案是因为我正在学习这些 jar 文件所属的算法课程,这是我的程序无法正常工作的具体原因。

于 2013-09-23T16:38:19.920 回答
1

如果要导入类,则需要下载该库的打包版本。请参阅本网页底部的问答部分。 http://introcs.cs.princeton.edu/java/stdlib/

问:如果我使用命名包来构造我的代码,编译器将无法再访问 stdlib.jar 中的库。为什么不?

A. stdlib.jar 中的库位于“默认”包中。在 Java 中,您不能从命名包访问默认包中的类。如果您需要将我们的库与命名包一起使用,您可以使用打包版本的 stdlib-package.jar。

于 2014-07-16T19:42:25.383 回答
0

首先,无法创建 BinarySearch(私有构造函数)。使用静态方法BinarySearch.rank(int key, int[] array)

其次,您只能从默认包访问 BinarySearch

第三怎么Arrays.binarySearch(array, key)办?

于 2014-07-18T16:52:31.280 回答