2013-07-22 40 views
1

我的标准ant build意外地编译了一个错误文件名的子类。以下是示例课程。Ant编译创建不需要的java类文件

public final class AdminResources 
{ 

    public static final class APPLICATION 
    { 
      public static final class MESSAGEBLOCK 
      { 
       public static final String LEDGER = "application.admin.app.messageblock.ledger"; 
      } 
    } 
} 

来自build.xml文件的部分示例。

<target name="Compile_Sources" depends="Init_Dir" description="Compile Sources"> 
    <javac 
     debug="true" 
     srcdir="${source.dir}" 
     destdir="${build.dir}" 
     classpathref="classpath">     
    </javac> 
</target> 

构建过程平稳无误地运行,但基于上面的类样本产生了额外的不需要的文件。

  • AdminResources.class (这是确定)
  • AdminResources $ APPLICATION.class
  • AdminResources $应用$ MESSAGEBLOCK.class

下面是我的环境信息。

  • 蚂蚁版本:1.9.0
  • 的Java:1.7.0-U21
+1

这是Java编译器从一个java文件数.class文件究竟是如何造成的。对于匿名类也是'AdminResources $ 1.class'。没关系。 –

+1

不需要以哪种方式?那些是你*宣称的类。 –

+0

对不起,这是我在大型Java开发中缺乏理解。 – wajatimur

回答

4

这有什么做与ANT编译:这两个文件是从内部类的AdminResources编译的类文件。即使您编译程序手动你最终会与每一个类文件,包括你的程序可能有匿名类:

Class name        File name 
--------------------------------------- --------------------------------------------- 
AdminResources       AdminResources.class 
AdminResources.APPLICATION    AdminResources$APPLICATION.class 
AdminResources.APPLICATION.MESSAGEBLOCK AdminResources$APPLICATION$MESSAGEBLOCK.class