我有一个名为"stdlib.jar"
的jar文件。它的"Default Package"
中有许多类。我已将此stdlib.jar
添加到我的NetBeans库中。而"Build"-ed
它没有使用stdlib.jar
中的任何内容。这样stdlib.jar
就可以添加到我的"./dist/lib"
文件夹中。但我仍然无法使用stdlib.jar
中的任何类
如何重用stdlib.jar
中的任何类?
答案 0 :(得分:3)
强烈建议不要为库甚至项目使用“默认包”包。
如果使用默认包,那么类名应该是唯一的,否则它们将覆盖所有java.lang
类。
现在来看你的情况。要使用stdlib.jar
,如果您已将其添加到库中,那么您应该可以使用它。
您可以使用您正在使用它的项目的默认包中的stdlib.jar
。除了默认包之外,您无法使用它,因为它将搜索该包中的stdlib.jar
类。
希望这能让你清楚。感谢。
答案 1 :(得分:1)
你正在使用Sedgewick的教科书,不是吗?如果是,请阅读常见问题解答:
Q值。如果我使用命名包来构造我的代码,则编译器无法再访问stdlib.jar中的库。为什么不呢?
一个。 stdlib.jar中的库位于"默认"包。在Java中,您无法从命名包访问默认包中的类。如果您需要将我们的库与命名包一起使用,则可以使用打包的版本stdlib-package.jar
答案 2 :(得分:1)
如果您在Coursera上使用Sedgewick教科书或算法课程,这可能会有所帮助。
如上所述,stdlib.jar中的库位于DEFAULT PACKAGE中。在Java中,您无法从命名包访问默认包中的类。 因此,您必须将源文件移动到项目的DEFAULT PACKAGE。这意味着您必须将源.java文件从./src/YOURPACKAGE/文件夹直接移动到项目的./src文件夹,然后删除YOURPACKAGE文件夹。你还必须删除“包YOURPACKAGE;”源文件开头的语句。
基本上你需要做的就是这些。现在,当您将源文件移动到默认包并将“stdlib.jar”添加到库时,从库中寻址类就没有问题了。您不需要他们的“导入”声明。