![](/img/trans.png)
[英]Java/Eclipse: Export classes, interfaces AND REFERENCED LIBRARIES to a jar file
[英]How to use classes in Referenced Libraries in Eclipse
我已将algs4.jar文件作为参考库导入,如上所示。 一切似乎都很好,但是我似乎无法使用或访问库中的任何类。
我是否缺少导入声明?
图片参考:
请注意我如何尝试从引用的库中使用BinarySearch
,但它没有为我提供使用或导入它的选项。
我不确定,我没有尝试过。 虽然有些解释。
这是标准库还是有人自己创建并给您的?
问题是类BinarySearch
在default
程序包中。 您将无法导入它。 如果此库是由您或您的任何朋友创建的,则需要让您的朋友将所有类从默认程序包移至良好的名称空间,然后重新创建jar。
如果可以访问该类,则ctr + shift + o
应该导入该类。
我正在通过Coursera学习Algorithms类,该类利用了algs4.jar参考库。
问题:
您遇到的问题是参考库位于默认程序包中,而您访问参考库的源不在其中。
解决方案
项目中的所有类都必须位于默认程序包中,否则引用库(位于默认程序包中)将无法识别。 您的项目类必须位于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)
呢?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.