6

我有一个名为 .jar 的 jar 文件"stdlib.jar"。这在它的"Default Package". 我已将此添加stdlib.jar到我的 NetBeans 库中。而且"Build"-ed它不使用任何来自stdlib.jar. 这样stdlib.jar就可以添加到我的"./dist/lib"文件夹中。但是我仍然不能在其中使用任何类stdlib.jar 我应该怎么做才能重用其中的任何类stdlib.jar

4

3 回答 3

3

强烈建议不要对库甚至项目使用“默认包”包。如果您使用默认包,那么类名应该是唯一的,否则它们将覆盖所有java.lang类。

现在谈到你的情况。要使用您的stdlib.jar,如果您已将其添加到您的库中,那么您应该可以使用它。您可以stdlib.jar从您正在使用它的项目的默认包中使用您的。除了默认包之外,您不能使用它,因为它会stdlib.jar在该包中搜索您的类。

希望这能让你清楚。谢谢。

于 2012-08-22T05:50:10.590 回答
1

您正在使用塞奇威克的教科书,不是吗?如果您是,请阅读常见问题解答:

问:如果我使用命名包来构造我的代码,编译器将无法再访问 stdlib.jar 中的库。为什么不?

A. stdlib.jar 中的库位于“默认”包中。在 Java 中,您不能从命名包访问默认包中的类。如果您需要将我们的库与命名包一起使用,您可以使用打包版本的stdlib-package.jar

同样的问题:Getting a library to import proper in netbeans

于 2014-03-22T17:35:43.020 回答
1

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

如上所述,stdlib.jar 中的库位于 DEFAULT PACKAGE 中。在 Java 中,您不能从命名包访问默认包中的类。因此,您必须将源文件移动到项目的默认包中。这意味着您必须将源 .java 文件从 ./src/YOURPACKAGE/ 文件夹直接移动到项目的 ./src 文件夹,然后删除 YOURPACKAGE 文件夹。您还必须删除“package YOURPACKAGE;” 源文件开头的语句。

基本上这就是你需要做的所有事情。现在,当您将源文件移动到默认包中,并将“stdlib.jar”添加到库中时,您可以毫无问题地从库中处理类。你不需要他们的“导入”声明。

于 2014-09-25T01:51:57.033 回答