1

我是 Java 新手,所以很难理解“包”范式。

我正在使用其他人的包 Framework 来构建我的程序。

当我这样做时,一切正常:

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

但是我已经检查,双重检查,三重检查和四重检查文件是否在正确的位置;此外,如果这是问题,那么在按特定类名导入时它不会失败吗?在我决定需要在这个问题上寻求帮助之前,我已经被难住了一段时间。:(

编辑:在尝试了许多简单和复杂的解决方案之后,答案最终只是保存我所有的工作,清理项目并重新编译。然后一切都像魔术一样工作。

如果有人能解释什么会导致这样的情况,以便我将来可以防止它发生,我将非常感激。

4

1 回答 1

4

似乎您在包和类之间存在命名冲突。可能有一些重构留下了旧的类文件。

Framework如果不是一个包,而是一个包含Item1其嵌套类的类,则会发生错误。另一种可能性是您在编译时只是使用了错误的目录作为源代码根目录。

无论如何,如果遵循 Java 命名约定,则不会调用该包,Frameworkframework不会出现这种情况。

于 2013-09-25T10:39:33.803 回答