10

如果我将类保存在默认包中,我只能访问引用的库类。如果我尝试从任何其他包访问它们,我会得到“无法解析类名”。知道为什么会发生这种情况吗?

在此处输入图像描述

4

3 回答 3

18

该软件包来自普林斯顿大学 IntroCS 课程的标准库,经过快速谷歌搜索。

如果您遵循页面 http://introcs.cs.princeton.edu/java/stdlib/上的常见问题解答

问:如果我使用命名包来构造我的代码,编译器将无法再访问 stdlib.jar 中的库。为什么不?A. stdlib.jar 中的库位于“默认”包中。在 Java 中,您不能从命名包访问默认包中的类。如果您需要将我们的库与命名包一起使用,您可以使用打包版本的 stdlib-package.jar。

下载包jar文件:http: //introcs.cs.princeton.edu/java/stdlib/stdlib-package.jar

右键单击项目文件夹并添加外部 JAR。

import edu.princeton.cs.introcs.*;

将上面的行添加到需要引用类的类中。第一行引用了正确的包名, * 通配符导入其中的所有类。

:) 希望有帮助。

//编辑 - 如果您右键单击项目文件夹并使用“组织导入”它会更快,因此您不必手动添加到每个类。

于 2012-09-06T02:41:31.757 回答
3

检查您是否有正确的import声明以及您所引用的类型是否具有public访问修饰符。

默认包中的类型的导入声明是不可能的。JLS 指定从未命名的包中导入类型是编译时错误。您必须通过反射访问您的类,或者最好不要使用默认包。当您想在默认包中创建类型时,Eclipse 应该向您显示警告,因为通常不鼓励这样做。

如果您使用的是 Eclipse 之类的 IDE,请尝试在要使用它的类中的类型名称后面点击CTRL+ 。SPACEEclipse 应该给你所有匹配的机会,如果你选择你的类,它会自动为你添加导入。

于 2012-09-05T18:02:33.650 回答
1

您需要将包导入其他包。

一个包中的类不能直接引用另一个包,除非它被引用。

于 2012-09-05T18:01:07.793 回答