【问题标题】:Execute a jar file using Ant使用 Ant 执行 jar 文件
【发布时间】:2011-03-03 22:17:34
【问题描述】:

我正在尝试使用 ant 从 java 类创建一个可运行的 jar 文件。 Java 类使用外部 jar。当我执行 build.xml 时,它的显示类在运行 java 程序时未找到异常。它的编译很好。

我的部分源代码:

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

<path id="project-classpath">
   <fileset dir="C:/xmldecode/lib">   
      <include name="*.jar"/>
   </fileset> 
</path>

 <target name="compile" depends="prepare">               
    <javac srcdir="${src.dir}" destdir="${classes.dir}">    
       <classpath refid="project-classpath"/>
    </javac> 
 </target>

 <target name="jar" depends="compile">
    <copy todir="${classes.dir}">     
       <fileset dir="C:/xmldecode/lib"/>    
    </copy>

    <pathconvert property="mf.classpath" pathsep=";"> 
       <path refid="project-classpath" /> 
       <flattenmapper /> 
    </pathconvert> 

    <jar destfile="${jar.dir}/${ant.project.name}.jar" basedir="${classes.dir}">
       <manifest>
          <attribute name="Main-Class" value="${main-class}"/>
          <attribute name="Class-Path" value="${mf.classpath}"/> 
       </manifest>
    </jar>
 </target>


 <target name="run" depends="jar">
    <java jar="${jar.dir}/${ant.project.name}.jar" fork="true">       
    </java>

【问题讨论】:

    标签: ant


    【解决方案1】:

    您的问题是清单类路径条目没有用“;”分隔特点。 我认为以下会更好:

    <pathconvert property="mf.classpath" pathsep=" "> 
        <path refid="project-classpath" /> 
        <flattenmapper /> 
    </pathconvert> 
    

    我可以建议使用新的 ANT 任务 manifestclasspath 吗?

    <manifestclasspath property="mf.classpath" jarfile="${jar.dir}/${ant.project.name}.jar">
        <classpath refid="project-classpath" />
    </manifestclasspath>
    

    这种强大的方法将确定相对于 jar 位置的路径,例如,如果 jar 的依赖项位于 lib 目录中

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-11-15
      • 2015-01-13
      • 2012-02-18
      • 1970-01-01
      • 2014-08-30
      • 1970-01-01
      • 2021-03-20
      相关资源
      最近更新 更多