2010-05-16 4 views
2

Я создал файл банку с помощью следующей ANT сценарияОшибка при выполнении Java -jar команды

<manifestclasspath property="jar.classpath" jarfile="${bin.dir}/${jar.app.name}" maxparentlevels="0"> 
    <classpath refid="main.class.path" /> 
</manifestclasspath> 
<target name="jar"> 
    <mkdir dir="${build.dir}/lib/isp"/> 
    <mkdir dir="${build.dir}/lib/jasper"/> 
    <copy todir="${build.dir}/lib/jasper"> 
      <fileset dir="${lib.jasper.dir}"> 
        <include name="**/*.jar" /> 
      </fileset> 
    </copy> 
    <copy todir="${build.dir}/lib/isp"> 
      <fileset dir="${lib.isp.dir}"> 
        <include name="**/*.jar" /> 
      </fileset> 
    </copy> 
    <jar jarfile="${bin.dir}/${jar.app.name}" 
      index="true" 
      basedir="${classes.dir}" excludes="lib/mytest.jar " 
      > 
      <manifest> 
        <attribute name="Main-Class" value="${main.class}" /> 
        <attribute name="Class-Path" value="${jar.classpath}" /> 
      </manifest> 
    </jar> 
</target> 

Полученный файл баночка имеет следующую запись MANIFEST.MF.

Main-Class: dm.jb.Main 
Class-Path: lib/isp/OfficeLnFs_2.2.jar lib/isp/RXTXcomm.jar lib/isp/ba 
rbecue-1.0.6d.jar lib/isp/commons-logging-1.1.jar lib/isp/forms-1.0.5 
.jar lib/isp/gnujaxp.jar lib/isp/helpUI.jar lib/isp/inspInstaller.jar 
lib/isp/itext-2.0.1.jar lib/isp/itext-2.0.2.jar lib/isp/jcalendar-1. 
3.2.jar lib/isp/jcl.jar lib/isp/jcommon-1.0.10.jar lib/isp/jcommon-1. 
0.9.jar lib/isp/jdnc-0_7-all.jar lib/isp/jdnc-runner.jar lib/isp/jdom 
.jar lib/isp/jfreechart-1.0.6.jar lib/isp/jlfgr-1_0.jar lib/isp/junit 
.jar lib/isp/log4j-1.2.9.jar lib/isp/looks-1.3.2.jar lib/isp/msbase.j 
ar lib/isp/mssqlserver.jar lib/isp/msutil.jar lib/isp/mysql-connector 

Когда я пытаюсь запустить команду java -jar mytest.jar, он терпит неудачу и бросает ошибку говоря dm.jb.Main не найдено. Но я мог бы запустить класс, указав путь к классам Java -classpath dm.jb.Main

Пожалуйста, помогите мне DM

ответ

1

Если вы запустите баночку, как это

java -jar <your jar name> 

затем Java будет игнорировать все classpath, которые вы даете, и попытайтесь найти его ресурсы с заданным классом пути внутри манифеста. Но эти исправления указывают на вашу локальную файловую систему, а не внутри банки. Таким образом, вы должны запустить jar в каталоге, где ваши библиотеки могут быть найдены в lib/isp/...

+0

У меня есть папка lib в каталоге, где я запускаю команду, и имеет все необходимые файлы jar точно так же, как указано файл MANIFEST. Тем не менее это не работает. – dmantamp

Смежные вопросы