【问题标题】:java - duplicate classjava - 重复类
【发布时间】:2013-10-19 13:36:38
【问题描述】:

对以下代码为什么会出现重复类错误感到困惑?

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package database_console;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;


/**
 *
 * @author davidsonr
 */
public class DBConnect {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
    }
}

Netbeans 将 DBConnect 突出显示为红色并带有重复的类错误。

【问题讨论】:

  • 错误很明显,同一个包中是否还有其他同名的类?是的,对吧?
  • 它是我项目中唯一的类文件。但是它必须与标准库类冲突?
  • 对 NetBeans 不熟悉,能否请您清理和构建?
  • 我决定重命名类和文件 DBConnectOne。解决了错误。
  • 这是另一种选择。但你应该质疑一切,试着找出它发生的原因。我相信你会学到一些东西 :) 祝你项目顺利。

标签: java class netbeans


【解决方案1】:

这是 netbeans BUG 226360 的一个已知问题



它可能有助于清除 Netbeans 缓存:

转到Help -> About 你会看到

缓存目录: Path\to\Directory

关闭 NetBeans,进入指定目录并删除所有内容。

【讨论】:

  • 我应该如何在 IntelliJ IDEA 中做到这一点?
  • 这解决了我的问题 - 谢谢 - 但有一个观察结果 - 在 NetBeans 重新启动和(重新)构建时,问题仍然存在 - 等待几分钟后构建成功 - 可能会被后台处理完全清除。
  • 我看不到 -> 关于我的 netbeans
  • 完美运行,问题解决。我犹豫是否要删除所有内容,因为在该文件夹下有几个子目录和几个文件,总计超过 76MB,但这是你必须做的。对于那些可能会担心的人,NetBeans 会在您重新启动它后重建所有内容,只需要几秒钟左右的时间。
  • 确实是非常烦人的错误。不过,仅删除缓存文件夹中的索引文件夹就足够了。这样你就不会丢失任何设置;-)
【解决方案2】:

如果包名与文件夹名不匹配,或者包名被省略,也会发生这种情况。检查源代码中的 package 声明。

【讨论】:

  • 这是我的情况,忘记加包名了,谢谢!
【解决方案3】:

这可能是由于同一个包中有两个同名的类

【讨论】:

    【解决方案4】:

    如果您在同一包中的单独文件中引用错误类,并且错误类与您引用错误类的文件的包路径不匹配,也会发生这种情况。

    例如 文件 1 some.incorrect.path.package

    class_that_is_erroring{ }

    文件 2 some.correct.path.package

    类新类{

    class_that_is_erroring myclass= null;

    }

    两个文件中的包路径必须相互匹配,并且匹配文件系统目录。

    【讨论】:

      【解决方案5】:

      如果文件名与类名不匹配,NetBeans 8.0.1 会将其报告为重复类。

      【讨论】:

        【解决方案6】:

        一个新的答案......在这种情况下,重复的类错误令人困惑。下一个错误也是如此,但它也指出了真正的问题和解决方法。

        来自我的日志文件:

        Error 1: a\g\GoodClass error:duplicate class: a.g.GoodClass //Not the problem
        Error 2: a\b\BadClass error: cannot access GoodClass        //The problem
                 bad source file: a\g\GoodClass                     //No, it's fine
                 file does not contain class x.y.GoodClass          //How to fix it
                 Please remove or make sure it appears in the correct subdirectory of the sourcepath.
        

        Java 报告 Error 2 的第一行,因为 BadClass 正在使用通配符导入,import x.*;import x.y.*;。 java 编译器首先找到 x.y.GoodClass,因此无法确定您真正想要的是哪个:a.g.GoodClass 或 x.y.GoodClass。

        修复:删除通配符导入并从库 x.y 添加您需要的特定导入。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-04-17
          • 2014-06-12
          • 2016-06-28
          • 1970-01-01
          • 1970-01-01
          • 2012-09-12
          • 2019-08-29
          • 2013-05-17
          相关资源
          最近更新 更多