如果我将类保存在默认包中,我只能访问引用的库类。如果我尝试从任何其他包访问它们,我得到“className无法解析”。知道为什么会这样吗?
答案 0 :(得分:18)
该软件包来自普林斯顿的IntroCS课程的标准库,快速使用谷歌。
如果您按照页面上的常见问题解答进行操作 http://introcs.cs.princeton.edu/java/stdlib/
Q值。如果我使用命名包来构造我的代码,编译器就不能 更长时间访问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.*;
将以上行添加到需要引用类的类中。 第一行引用正确的包名称,*通配符导入其中的所有类。
:)希望有所帮助。
//编辑 - 如果右键单击项目文件夹并使用“组织导入”,它将更快,因此您不必手动添加到每个类。
答案 1 :(得分:3)
检查您是否有正确的import
声明,并且您所引用的类型包含public
访问修饰符。
默认包中的类型的导入声明是不可能的。 JLS指定从未命名的包导入类型是编译时错误。 您必须通过反射访问您的课程,或者更好的是不要使用默认包。当您想要在默认包中创建类型时,Eclipse应该向您显示警告,因为通常不鼓励它。
如果你正在使用像Eclipse这样的IDE,那么尝试在要使用它的类中的类型名称后面点击 CTRL + SPACE 。 Eclipse应该为您提供所有匹配的机会,并且如果您选择了类,将自动为您添加导入。
答案 2 :(得分:1)
您需要将包导入其他包中。
一个包中的类不能直接引用其他包,除非它被引用。