为什么我可以导入一个特定的类而不是它的Java包?
我是Java新手,因此很难理解“包”范式 我正在使用其他人的包Framework来构建我的程序 当我这样做时,一切正常:为什么我可以导入一个特定的类而不是它的Java包?,java,class,import,package,Java,Class,Import,Package,我是Java新手,因此很难理解“包”范式 我正在使用其他人的包Framework来构建我的程序 当我这样做时,一切正常: import Framework.Item1; import Framework.Item2; import Framework.Item3; 当我这样做时,没有任何效果: import Framework.*; 当我在控制台尝试使用javac.exe编译时失败,它在编译时停止。错误内容如下: error: cannot access Item1 bad class fi
import Framework.Item1;
import Framework.Item2;
import Framework.Item3;
当我这样做时,没有任何效果:
import Framework.*;
当我在控制台尝试使用javac.exe编译时失败,它在编译时停止。错误内容如下:
error: cannot access Item1
bad class file: ...\Framework\Item1.class
class file contains wrong clsas: Framework.Item1
Please remove or make sure it appears in the correct subdirectory of the classpath
但是我已经检查过,双重检查过,三重检查过,四重检查过文件是否在正确的地方;此外,如果问题出在按特定类名导入时,它不会失败吗?在我决定在这件事上寻求帮助之前,我已经被难住了一段时间(
编辑:在尝试了许多简单和复杂的解决方案后,最终的答案是保存我所有的工作,清理项目并重新编译。然后一切都像魔术一样工作
如果有人能解释一下是什么导致了这样的情况,以便我将来能阻止它,我将不胜感激。似乎在包和类之间存在命名冲突。可能有一些重构将旧的类文件遗留下来 如果
Framework
不是一个包,而是一个类,其中包含Item1
作为其嵌套类,则会发生错误。另一种可能是,在编译时,您只是使用了错误的目录作为源代码根
在任何情况下,如果遵循Java命名约定,包将不会被称为
Framework
,而是Framework
,并且不会出现这种情况。包和类之间似乎存在命名冲突。可能存在一些重构,留下了旧的类文件
如果Framework
不是一个包,而是一个类,其中包含Item1
作为其嵌套类,则会发生错误。另一种可能是,在编译时,您只是使用了错误的目录作为源代码根
在任何情况下,如果遵循Java命名约定,包将不会被称为
Framework
,而是Framework
,并且不会出现这种情况。应该对您有用:试试javac-cp.*.Java
有时候会发生一些神秘的事情,通常清理项目可以创造奇迹谢谢@ghoulfolk-在尝试了各种困难的解决方案后,它归结为这样简单的事情。我仍然不知道为什么,但只是删除了很多文件并从头开始重新编译,最终成功了。感谢您的建议!应该对您有用:试试javac-cp.*.java
有时会发生神秘的事情,通常是在g清理项目可以创造奇迹谢谢@ghoulfolk-在尝试了各种困难的解决方案后,它归结为这么简单的事情。我仍然不知道为什么,但只是删除了很多文件并从头开始重新编译,最终成功了。谢谢你的建议!