У нас есть скрипт сборки Ant для проекта, который мы разрабатываем для КПК. В eclipse у нас есть множество библиотек, на которые есть ссылки, и я знаю, как заставить их работать, когда мы запускаем jar на КПК, потому что у нас есть файл .lnk, куда вы можете добавить внешние библиотеки, просто добавив следующее:
512#"\J9\PPRO11\bin\j9.exe" -jcl:ppro11 -cp "\dist\WiFiTest.jar;\placelab\lib\placelab.jar" j2medemo.wifi.WiFiTest
Добавление любых необходимых нам библиотек после аргумента -cp. Тем не менее, я понятия не имею, как воспроизвести это в файле ant (на самом деле, это не преувеличение, но после прочтения всей документации я все еще не понимаю).
У нас есть следующее.
<target name="jar" depends="prepare">
<delete file="${dist}/${appname}.jar"/>
<delete file="${dist}/MANIFEST.MF"/>
<manifest file="${dist}/MANIFEST.MF">
<attribute name="Built-By" value="${user.name}"/>
<attribute name="Main-Class" value="j2medemo.GUI.MapPanel"/>
</manifest>
<jar destfile="${dist}/${appname}.jar"
basedir="${classes}"
includes="**/*.class, **/*.jpg, **/*.gif,**/*.png,**/*.xml"
manifest="${dist}/MANIFEST.MF"
/>
</target>
Я пробовал добавлять везде, где только могу придумать, но это не помогает. Могу ли я просто добавить его к включаемой части?
Во-вторых, у нас есть цель запуска:
<target name="run" description="run" depends="jar">
<exec dir="${j9bin}" executable="${j9bin}\j9.exe">
<arg line="-jcl:ppro11 -cp '${dist}\${appname}.jar;placelab\lib\placelab.jar' ${mainclass}"/>
<env key="JAVA_HOME" path="${j9home}"/>
</exec>
</target>
И я хотел изменить его для запуска другого класса, поэтому я создал следующие две цели:
<target name="jarSAX" depends="prepare">
<delete file="${dist}/SAXParse.jar"/>
<delete file="${dist}/MANIFEST.MF"/>
<manifest file="${dist}/MANIFEST.MF">
<attribute name="Built-By" value="${user.name}"/>
<attribute name="Main-Class" value="j2medemo.Routes.SAXParse"/>
</manifest>
<jar destfile="${dist}/SAXParse.jar"
basedir="${classes}"
includes="**/*.class, **/*.jpg, **/*.gif,**/*.png,**/*.xml"
manifest="${dist}/MANIFEST.MF"
/>
</target>
И
<target name="runSAXParser" description="run" depends="jarSAX">
<exec dir="${j9bin}" executable="${j9bin}\j9.exe">
<arg line="-jcl:ppro11 -cp '${dist}\SAXParse.jar' j2medemo.Routes.SAXParse"/>
<env key="JAVA_HOME" path="${j9home}"/>
</exec>
</target>
Но если я попытаюсь запустить это, я получу следующую ошибку:
Exception in thread "main" java.lang.NoClassDefFoundError: j2medemo.Routes.SAXParse
Если у кого-то есть идеи / решения по любому из вопросов, которые будут наиболее полезны.