如何在Eclipse中的Referenced Libraries中使用类

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

有缺失的import声明吗?

图片参考:

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

我不确定,我没试过。 但是有些解释。

这是一个标准的图书馆还是有人亲自创建并给了你?

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

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

我正在使用带有algs4.jar参考库的Coursera进行算法课程。

问题:

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

解决方案

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

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

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

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

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

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

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

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

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

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