繁体   English   中英

如何找到“已在未命名的包中定义”的Java类?

[英]How can I find a Java class that's “already defined in an unnamed package”?

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

*classname* is already defined in unnamed package

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

我尝试重命名.java文件,但是我得到了上面提到的编译器错误。 我重新启动了我的控制台窗口和记事本,以防某些东西卡在内存中。 这没有解决问题。

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

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

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

所有文件都没有前导package语句。 无论如何,正如Java文档中所报告的那样:

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

请参阅@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 =要在文件中查找的字符串

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM