【问题标题】:ant java compile throwing cannot find symbolant java编译抛出找不到符号
【发布时间】:2014-07-08 12:45:55
【问题描述】:

我正在从事一个具有分层架构的项目。 我有一个接口 ABC,在那个接口中我有一个枚举 XYZ

例如

public interface ABC {
     public enum XYZ {
         CONSTANT1("SOMETHING"),
         CONSTANT2("SOMETHING3");
         final String name;

         private TYPE(String name) {
            this.name=name;
         }

         public String getName() {
            return this.name;
         }
     }
}

我正在使用 ant 编译它并在其他层使用这个 jar 文件。在该层中,我尝试像访问它一样

String name=ABC.XYZ.CONSTANT1.getName();

我在编译期间收到符号未找到错误。我验证类路径设置正确。 我正在使用 ant v 1.8 和 java 1.6。

为什么会出现这个错误?

【问题讨论】:

    标签: java ant compilation classpath


    【解决方案1】:

    首先,不要将枚举嵌套在接口中。它有自己的以枚举命名的源文件,这很好。

    其次,我假设您的私人构造函数中的意思是 XYZ 而不是 TYPE

    最后,您应该能够以这种方式使用它,无论是通过 ant 编译还是在 eclipse 中编译,还是直接使用 javac 编译。可能你还没有编译所有东西——按照你编译的方式,应该有ABC.class(接口)、ABC$XYZ.class(内部枚举)和你调用类的类文件。

    【讨论】:

    • 我的要求是这样的,只是我必须在接口内嵌套枚举。是的,我的意思是我使用 javac 编译的私有构造函数中的 XYZ,而我的 jar 文件中不存在 ABC$XYZ.class
    • @spanhawk:好的,这就是你的答案。如果你这样做javac ABC.java,这会导致两个文件都被创建——同样应该由 javac ant 任务完成,并且都必须复制到你的 jar 文件中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-16
    • 2019-05-31
    相关资源
    最近更新 更多