【问题标题】: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”添加到库中时,您可以毫无问题地从库中处理类。你不需要他们的“导入”声明。

      【讨论】:

      猜你喜欢
      • 2012-01-06
      • 2017-09-12
      • 1970-01-01
      • 2015-07-11
      • 1970-01-01
      • 2013-04-14
      • 2020-06-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多