【问题标题】:Create a runnable jar using ant and genJar使用 ant 和 genJar 创建一个可运行的 jar
【发布时间】:2015-12-06 07:49:54
【问题描述】:

我写了以下蚂蚁目标:

<target name="approval_request_parser_compile">
        <taskdef resource="genjar.properties" classpath="GenJar.jar"/>
        <genjar jarfile="prod/lib/approvalRequestParser.jar">

            <class>
                <fileset dir=".">
                 <include name="com.bet.Check.class"/>
                    <include name="com.bet.Approve.class"/>
                    <include name="com.bet.CheckText.class"/>
                    <include name="com.bet.Request.class"/>
                    <include name="com.bet.ApprovalRequestParser.class"/> #contains the main method
                </fileset>
            </class>
            <classpath>
                <fileset dir="lib">
                    <include name="*.jar" />
                </fileset>
                <pathelement path="."/>
            </classpath>
        </genjar>
    </target>

jar 已成功创建,但是当我转到 /prod/lib 并输入:

java -jar approvalRequestParser.jar

出现此错误:

no main manifest attribute, in approvalRequestParser.jar

有什么想法吗?

【问题讨论】:

    标签: java ant jar executable-jar


    【解决方案1】:

    我没有使用genjar,但是你需要创建manifest文件,看下面的例子

    <target name="buildJAR" depends="compile">
      <tstamp>
        <format property="BUILD.TSTAMP" pattern="MMMM dd yyyy hh:mm:ss" locale="en"/>
        </tstamp>
        <buildnumber file="build.number"/>
      <mkdir dir="classes/META-INF"/>
      <echo file="classes/META-INF/version.txt">Version: ${VERSION} (build #: ${build.number}, ${BUILD.TSTAMP})</echo>
        <manifest file="classes/META-INF/MANIFEST.MF">
            <attribute name="Specification-Title" value="ANY TEXT CAN GO HERE"/>
            <attribute name="Specification-Version" value="${VERSION}"/>
            <attribute name="Specification-Vendor" value="COMPANY NAME"/>
            <attribute name="Implementation-Title" value="WHAT CODE DOES"/>
            <attribute name="Implementation-Version" value="${VERSION} (build #: ${build.number}, ${BUILD.TSTAMP})"/> 
            <attribute name="Implementation-Vendor" value="WHO DOES IT"/>
        </manifest>
      <jar destfile="JAR FILE" basedir="classes" 
           includes="${CORE_CODE}" manifest="classes/META-INF/MANIFEST.MF"/>
    </target>
    

    我认为你可以为 genjar 任务应用同样的方法

    【讨论】:

      猜你喜欢
      • 2012-04-10
      • 2014-11-01
      • 1970-01-01
      • 2014-08-30
      • 1970-01-01
      • 2014-03-10
      • 2014-04-01
      • 2012-03-13
      相关资源
      最近更新 更多