【问题标题】:Manifest file not being generated through ANT不是通过 ANT 生成清单文件
【发布时间】:2015-08-20 00:14:41
【问题描述】:

清单文件不是通过 ANT 生成的。从它的样子来看,应该生成一个 oata.HelloWorld,我假设它是清单文件。但是,它不在 build/class 文件夹或 build/jar 文件夹中。我也在通过 Eclipse 运行 ANT

Buildfile: C:\Users\dt208672\Perforce\depot\ebill\Automation\Selenium_eBill\MarketPower\build.xml
init:
prepare:
compile:
[javac] C:\Users\dt208672\Perforce\depot\ebill\Automation\Selenium_eBill\MarketPower\build.xml:18: warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds
jar:
run:
[java] Error: Could not find or load main class oata.HelloWorld
[java] Java Result: 1

这是我的 xml 代码。

<?xml version="1.0" ?>

<project name="SeleniumProjectDataDriven" basedir="." default="run">
<target name="init">
    <property name="src.dir" value="src" />
    <property name="build.dir" value="build" />
    <property name="classes.dir" value="${build.dir}/class" />
    <property name="lib.dir" value="../JAR/MarketPower Jars" />
    <property name="Common.dir" value="../Common" />
    <property name="CommonBin.dir" value="${Common.dir}/bin" />
</target>

<target name="prepare" depends="init">
    <mkdir dir="${classes.dir}" />
</target>

<target name="compile" description="Compiles the code" depends="prepare">
    <javac srcdir="${src.dir}" destdir="${classes.dir}">
        <classpath>
            <fileset dir="${lib.dir}">
                <include name="**/*.jar" />
            </fileset>
        </classpath>
    </javac>
</target>

<target name="jar" description="Packages the code into jar" depends="compile">
    <mkdir dir="build/jar"/>
        <jar destfile="build/jar/HelloWorld.jar" basedir="build/class">
            <manifest>
                <attribute name="Main-Class" value="oata.HelloWorld"/>
            </manifest>
        </jar>
</target>

<target name="run" description="Run the jar file" depends="jar" >
    <java jar="build/jar/HelloWorld.jar" fork="true"/>
</target>

【问题讨论】:

    标签: java eclipse ant


    【解决方案1】:

    您的问题与您所说的完全相反。 Jar 文件只有清单,如知道主类名称oata.HelloWorld 的错误消息所示。

    需要将编译好的.class文件添加到Jar文件中。

    <jar destfile="build/jar/HelloWorld.jar">
        <manifest>
            <attribute name="Main-Class" value="oata.HelloWorld"/>
        </manifest>
        <fileset dir="${classes.dir}" includes="**/*.class"/>
    </jar>
    

    更新

    以下内容对我来说很好。

    src\oata\HelloWorld.java

    package oata;
    public class HelloWorld {
        public static void main(String[] args) {
            System.out.println("Hello World");
        }
    }
    

    build.xml

    <project name="SeleniumProjectDataDriven" basedir="." default="run">
      <target name="init">
        <property name="src.dir" value="src" />
        <property name="build.dir" value="build" />
        <property name="classes.dir" value="${build.dir}/class" />
        <property name="jar.dir" value="${build.dir}/jar" />
      </target>
    
      <target name="compile" description="Compiles the code" depends="init">
        <mkdir dir="${classes.dir}" />
        <javac srcdir="${src.dir}" destdir="${classes.dir}" includeantruntime="false" />
      </target>
    
      <target name="jar" description="Packages the code into jar" depends="compile">
        <mkdir dir="${jar.dir}" />
        <jar destfile="${jar.dir}/HelloWorld.jar" basedir="build/class">
          <manifest>
            <attribute name="Main-Class" value="oata.HelloWorld" />
          </manifest>
        </jar>
      </target>
    
      <target name="run" description="Run the jar file" depends="jar" >
        <java jar="${jar.dir}/HelloWorld.jar" fork="true" />
      </target>
    </project>
    

    输出

    compile:
    Compiling 1 source file to C:\My\Workspaces\EMDRS\_test\build\class
    
    jar:
    Building jar: C:\My\Workspaces\EMDRS\_test\build\jar\HelloWorld.jar
    
    run:
    Hello World
    
    BUILD SUCCESSFUL
    Total time: 1 second
    

    【讨论】:

    • 如果您打开 .jar 文件,例如重命名为 .zip 并用 WinZip 打开,它是否包含名为 oata/HelloWorld.class 的文件?
    猜你喜欢
    • 2011-12-10
    • 1970-01-01
    • 2010-10-25
    • 2010-11-30
    • 2015-12-10
    • 1970-01-01
    • 2011-04-07
    • 2017-01-19
    • 1970-01-01
    相关资源
    最近更新 更多