1

我正在尝试将FlowLayout()UI转换为GridBagLayout()UI。经过一些修改和测试,我开始收到编译器错误:

*classname* is already defined in unnamed package

我决定回滚到那个FlowLayout()版本——我的最后一个工作版本。该版本编译得很好,但是当我运行(从命令行)时,GridBagLayout()会显示我的混乱。

我尝试重命名 .java 文件,但出现上述编译器错误。我重新启动了我的控制台窗口和记事本,以防有什么东西卡在某个地方的内存中。那并没有解决问题。

但是,我确实将FlowLayout()版本带到了尚未编译GridBagLayout()更改的笔记本电脑上。在那台机器上,它运行得很好,给了我FlowLayout()我所期待的。

我已经扫描了我的 /java 目录中的 *.class,删除了我找到的所有类,但我仍然收到错误消息。如果它有所作为,我正在运行 Win7。记事本是我的“IDE”,我从命令提示符运行所有内容。

我需要寻找什么来刷新这个“未命名的包”?

4

2 回答 2

2

您的所有文件都没有前导package语句。无论如何,如Java 文档中所述:

一般来说,未命名的包仅适用于小型或临时应用程序,或者当您刚刚开始开发过程时。否则,类和接口属于命名包。

于 2013-05-06T19:55:51.420 回答
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

传奇:

  • /S = 递归子目录
  • /I = 不区分大小写的匹配
  • /N = 打印行号
  • /C = 要在文件中查找的字符串
于 2013-05-06T20:42:21.000 回答