2013-09-25 48 views
1

我是Java新手,所以很难理解'包'范例。为什么我可以导入特定的类,但不能在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 

但我已经检查,双重检查,三重检查,和四检查这些文件是否在正确的地方;此外,如果问题出在特定的类名称导入上,它会不会失败?在我决定需要寻求帮助之前,我被困了一段时间。 :(

编辑:尝试多种解决方案既简单又复杂后,答案终于以只保存我所有的工作,清理项目,并重新编译然后,一切都像变魔术一样

如果任何人都可以解释。什么会导致这样的情况,以便我可以在将来防止它,我会非常感谢。

+1

应该对你有用:http://stackoverflow.com/questions/631682/help-with-packages-in-java-import-does-not-work – PrR3

+0

尝试'javac -cp。 * .java' – TheKojuEffect

+2

有时会发生神秘的事情,通常做项目的清理可以创造奇迹 – ghoulfolk

回答

4

看起来你有一个命名冲突之间的一个包和一个类。可能有一些重构,剩下的旧类文件。

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

在任何情况下,如果遵循Java命名约定,则该包不会被称为Framework,而是framework,这种情况不会出现。

相关问题