Выполнить файл JAR с помощью Ant - PullRequest
1 голос
/ 15 июня 2010

Я пытаюсь создать исполняемый jar-файл из классов java с помощью ant. Java-классы используют внешние банки. Когда я выполняю 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>

1 Ответ

1 голос
/ 15 июня 2010

Ваша проблема в том, что записи манифеста classpath не разделены знаком ";" персонаж. Следующее будет работать лучше, я думаю:

<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>

Этот мощный метод будет определять пути относительно местоположения банки, например, если зависимости банка находятся в каталоге lib

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...