如上所示,我已将 algs4.jar 文件作为引用库导入。一切似乎都很好,但我似乎无法使用或访问库中的任何类。
是否有我缺少的导入声明?
图片参考:
请注意我如何尝试BinarySearch
从引用的库中使用,但它没有为我提供使用或导入它的选项。
我正在通过 Coursera 学习算法课程,该课程利用 algs4.jar 参考库。
问题:
您遇到的问题是参考库位于默认包中,而您访问参考库的源不在。
解决方案
您项目中的所有类都需要在默认包中,否则将无法识别参考库(位于默认包中)。您的项目类需要位于 src 目录中,并且不应在 .java 文件的开头声明包。此外,您还需要确保已将参考库添加到构建路径中。
我不确定,我没有尝试过这个。虽然有些解释。
这是一个标准库还是有人自己创建并给你的?
问题是类BinarySearch
在default
包中。您将无法导入它。如果这个库是由您或您的任何朋友创建的,您需要让您的朋友将所有类从默认包移动到一个好的命名空间,然后重新创建 jar。
如果类可访问,ctr + shift + o
则应导入该类。
请注意,jar 文件中的类都包含在默认包中。
如果您的类随后包含在一个包中,那么它们将无法直接访问。
我提交这个答案是因为我正在学习这些 jar 文件所属的算法课程,这是我的程序无法正常工作的具体原因。
如果要导入类,则需要下载该库的打包版本。请参阅本网页底部的问答部分。 http://introcs.cs.princeton.edu/java/stdlib/
问:如果我使用命名包来构造我的代码,编译器将无法再访问 stdlib.jar 中的库。为什么不?
A. stdlib.jar 中的库位于“默认”包中。在 Java 中,您不能从命名包访问默认包中的类。如果您需要将我们的库与命名包一起使用,您可以使用打包版本的 stdlib-package.jar。
首先,无法创建 BinarySearch(私有构造函数)。使用静态方法BinarySearch.rank(int key, int[] array)
其次,您只能从默认包访问 BinarySearch
第三怎么Arrays.binarySearch(array, key)
办?