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