1

我为我的项目创建了一个 ant build。
提取 myfile.class(r) 之类的 jar 文件时,我看到了一些不同的类名。
并且这个类文件的大小与编译后的类文件的大小不同。
为什么会这样。当我运行 jar 时,我得到了找不到方法的异常。但是我从 eclipse 中导出的 jar 工作正常。

这是我的 build.xml 文件

<path id="master-classpath">
    <fileset dir="${lib.dir}">
        <include name="*.jar"/>
    </fileset>

</path>

<manifestclasspath property="lib.list" jarfile=".">
        <classpath refid="master-classpath" />
</manifestclasspath>

<target name="clean" description="Clean output directories">
        <delete dir="${build.dir}"/>
</target>


<target name="build" description="Compile source tree java files">
        <echo>copy src files</echo>
        <mkdir dir="${copy.dir}"/>
        <copy todir="${copy.dir}">
                <fileset dir="${src.dir}">
                    <exclude name="**/*.class"/>
                    <include name="**/*.java"/>
                    <include name="**/*.properties"/>
                    <include name="**/*.MIB"/>
                    <include name="**/*.java.bak"/>

                </fileset>        
        </copy>


    <echo>Compiling the source code</echo>
    <echo>Apache Ant java version is ${ant.java.version}</echo>
    <mkdir dir="${build.dir}"/>
    <javac destdir="${build.dir}" srcdir="${copy.dir}" source="1.6" target="1.6" debug="on">

        <classpath refid="master-classpath"/>
    </javac>
    <copy todir="${build.dir}">
        <fileset dir="${src.dir}/src">
            <exclude name="**/*.java"/>
            <exclude name="**/*.class"/>
            <include name="**/*.properties"/>
            <include name="**/*.MIB"/>
        </fileset>        
    </copy>  
</target>

<target name="jar" depends="build">



    <mkdir dir="${jar.dir}"/>
    <echo>building jar!</echo>


    <jar destfile="${jar.dir}/${ant.project.name}.jar" >



        <fileset dir="${build.dir}" >
                <include name="**/*.class" />
                <include name="**/*.properties" />
                <include name="**/*.MIB" />
                <include name="**/*.java.bak"/>
                <include name="**/*.png"/>
                <include name="**/*.jpg"/>
        </fileset>


        <zipfileset includes="**/**.**" src="${lib.dir}/junit.jar"/>
        <zipfileset includes="**/*.*" src="${lib.dir}/mysql-connector-java-5.0.8-bin.jar"/>
        <zipfileset includes="**/*.*" src="${lib.dir}/NicManager.jar"/>
        <zipfileset includes="**/**.**" src="${lib.dir}/log4j-1.2.14.jar"/>
        <zipfileset includes="**/*.*" src="${lib.dir}/snmp4j-1.11.3.jar"/>
        <zipfileset includes="**/*.*" src="${lib.dir}/snmp4j-agent-1.4.3.jar"/>
        <zipfileset includes="**/*.*" src="${lib.dir}/NMSLookAndFeel.jar"/>
        <zipfileset includes="**/*.*" src="${lib.dir}/rt.jar"/>   
        <manifest>
            <attribute name="Main-Class" value="com.ushustech.nmsazzist.NMSAzzistApp" />
            <attribute name="Class-Path" value="${lib.list}"/>
        </manifest>

    </jar>
</target>
<target name="main" depends="clean,jar"/>

4

1 回答 1

1

几天后我发现了问题。这是因为一个重复的 jar 文件也包含我项目中的类。这些类看起来像 myfile.class(r)。

于 2013-01-25T09:09:37.783 回答