我正在尝试将FlowLayout()
用户界面转换为GridBagLayout()
用户界面。经过一些修改和测试后,我开始收到编译器错误:
*classname* is already defined in unnamed package
我决定回滚到FlowLayout()
版本 - 我的上一个工作版本。该版本编译得很好,但是当我运行时(从命令行),我的混乱显示GridBagLayout()
。
我尝试重命名.java文件,但是我收到了上面提到的编译器错误。我重新启动了我的控制台窗口和记事本,以防某些东西卡在内存中。这没有解决问题。
但是,我确实将FlowLayout()
版本带到了我尚未编译GridBagLayout()
更改的笔记本电脑上。在那台机器上,它运行得很好,给了我期待的FlowLayout()
。
我已经扫描了我的/ java目录中的* .class,删除了我找到的所有类,但我仍然收到错误。如果它有所作为,我正在运行Win7。记事本是我的“IDE”,我在命令提示符下运行所有内容。
我需要寻找什么才能刷新这个“未命名的软件包”?
答案 0 :(得分:2)
所有文件都没有前导package
语句。无论如何,正如Java docs所述:
一般来说,一个未命名的包只适用于小型或临时应用程序,或者刚刚开始开发过程。否则,类和接口属于命名包。
答案 1 :(得分:1)
请参阅@esseks发布的链接以了解Java包。我发帖只是为了帮助您使用findstr
快速找到任何重复的类定义(Windows等效于grep
)
C:\> CD C:\path\to\java
// delete all .class files
C:\path\to\java>del /S *.class
// find all .java files with FlowLayout class definition
C:\path\to\java>findstr /S /I /N /C:"class flowlayout" *.java
// find all .java files with GridBagLayout class definition
C:\path\to\java>findstr /S /I /N /C:"class gridbaglayout" *.java
图例: