2011-10-04 26 views
4

所以我想用我刚刚下载名为stdlib.jar库浪费时间(从http://introcs.cs.princeton.edu/java/stdlib/下载)获取一个图书馆正确导入在NetBeans

所以我加了库项目,当我考察项目它在netbeans中看起来像这样: package inspector in netbeans

所以看起来库的设置是正确的。

但是,在我的项目中,当我尝试使用其中一个库类时,它看起来像这样。

My Custom Audio Player Class

鼠标移动到顶部的import语句,说expected "."
,如果我改变import语句说import stlib.StdAudio它说,库不存在。
任何机构都知道问题是什么?

回答

1

这个库的所有的源代码(这是非常不寻常:我第一次遇到这样的)是默认的包,这意味着你不必输入任何东西如果你的类也是默认包 。只需使用类名即可。

StdAudio.play(tone); 

只要确保它在类路径中,但我认为是从NetBeans中查看截图。


更新:好像我错了。在页面的底部,你可以找到这样的:

问:如果我使用了一个名为包来构建我的代码,编译器不能 再访问图书馆stdlib.jar。为什么不?
A. stdlib.jar中的库 位于“默认”包中。 在Java中,您不能从命名包访问默认包中的 类。如果您需要 使用我们的标准库和命名包,您必须将我们的 库放在一个包中,就像这个解决方案一样。

因此,您必须将类复制到您的项目的包musicplayer

+1

哦,那似乎很凌乱。哈哈,我只是这样做,我猜。非常感谢! – wbarksdale

0

如果您在Coursera上使用Sedgewick教材或算法课程,这可能会有所帮助。

正如上面提到的,stdlib.jar中的库位于DEFAULT PACKAGE中。在Java中,您无法从命名包访问默认包中的类。 所以你必须将源文件移动到项目的默认包装中。这意味着您必须将源musicplayer.java文件从./src/MUSICPLAYER/文件夹直接移至项目的./src文件夹,然后删除MUSICPLAYER文件夹。你也必须删除“package MUSICPLAYER;”声明在源文件的开头。

基本上这就是你需要做的。现在,当您将源文件移动到默认软件包并将“stdlib.jar”添加到库时,从库中寻址类时不会有任何问题。你不需要任何“导入”的说法。

+0

stdlib现在包含在algs4.jar中,可以从这里下载http://introcs.cs.princeton.edu/java/code/ –

1

1)摆脱导入声明。

2)摆脱包装声明。

3)将musicplayer.java直接在文件夹/ src目录

4)右键点击项目菜单库和添加stdlib.jar