名称为 class 的 Javac 编译器错误 antbuild

Javac compiler bug with class name antbuild

当我 运行 遇到一个我无法解释的问题时,我正试图做一个编译 java 项目源代码的 ant 构建。首先是我的蚂蚁目标:

<target name="compile-companymanage" depends="compile-company">
    <mkdir dir="${companymanagebin}"/>
    <javac destdir="${companymanagebin}">
        <src path="${companymanagesrc}" />
        <classpath refid="companyManage.classpath"/>
    </javac>
</target>

在 运行 之后我收到错误:

[javac] project\src\com\company\manage\vo\InvoiceL‌ineSupplierVM.java:31: error: class InvoiceLineSupplierVM is public, should be declared in a file named InvoiceLineSupplierVM.java
[javac] public class InvoiceL‌ineSupplierVM
[javac]        ^
[javac] 1 error

我们已经在不同的项目中尝试过,它们编译得很好。希望有人能帮助我。

我们已尝试重命名该文件并 class 使用相同的名称。

为完整起见添加答案,并简化将来会遇到此错误的其他人的生活。

很可能您的其中一个名字中有一个不可打印的字符,您的 class 名字或您的文件名。这将导致编译器拥有或期望的不匹配。

解决这个问题,通常是对涉及的文件和classes进行重命名。重要的是,在重命名时,不要复制和粘贴名称,而是将其键入。这将确保不可打印的字符不会出现在文件名称中,并且 class 发生了。