【问题标题】:Getting a library to import properly in netbeans让一个库在 netbeans 中正确导入
【发布时间】:2011-10-04 18:24:53
【问题描述】:
所以我想弄乱我刚刚下载的一个名为 stdlib.jar 的库(从 http://introcs.cs.princeton.edu/java/stdlib/ 下载)
所以我将库添加到项目中,当我检查项目时,它在 netbeans 中看起来像这样:
看来这个库已经设置妥当了。
但是在我的项目中,当我尝试使用其中一个库类时,它看起来像这样。
将鼠标悬停在顶部的导入语句上, expected "."
如果我将导入语句更改为import stlib.StdAudio ,则表示该库不存在。
有谁知道问题出在哪里?
【问题讨论】:
标签:
java
netbeans
shared-libraries
【解决方案1】:
这个库的所有源代码(这很不寻常:我第一次遇到这个)都在默认包中,这意味着你不必导入任何东西如果你的类也在默认包中。只需使用类名即可。
StdAudio.play(tone);
只要确保它在类路径中,但如果我从 NetBeans 中查看您的屏幕截图,我认为它是。
更新:好像我错了。在页面底部,您可以找到:
Q.如果我使用命名包来构造我的代码,编译器不能
不再访问stdlib.jar 中的库。为什么不呢?
A. 图书馆
stdlib.jar 中的“默认”包中。 在 Java 中,您无法访问
来自命名包的默认包中的类。 如果您需要
将我们的标准库与命名包一起使用,您必须将我们的
包中的库,如本解决方案中所示。
所以,你必须将这些类复制到你的项目中,它的包musicplayer。
【解决方案2】:
1) 去掉 import 语句。
2) 去掉 package 语句。
3) 将musicplayer.java直接放到文件夹/src中
4)在项目菜单中右键库,添加stdlib.jar
【解决方案3】:
如果您在 Coursera 上使用 Sedgewick 教科书或算法课程,这可能会有所帮助。
如上所述,stdlib.jar 中的库位于默认包中。在 Java 中,您不能从命名包访问默认包中的类。
因此,您必须将源文件移动到项目的默认包中。这意味着您必须将源 musicplayer.java 文件从 ./src/MUSICPLAYER/ 文件夹直接移动到项目的 ./src 文件夹,然后删除 MUSICPLAYER 文件夹。您还必须删除“package MUSICPLAYER;”源文件开头的语句。
基本上这就是您需要做的所有事情。现在,当您将源文件移动到默认包中,并将“stdlib.jar”添加到库中时,您可以毫无问题地从库中处理类。你不需要他们的“导入”声明。