Я хочу указать путь к другому каталогу (который содержит банки, в настоящее время d:/ext_jars
). После запуска build.xml. Я хочу, чтобы этот путь шел по этой работающей банке.
В настоящее время эта банка выдает мне ошибки из-за отсутствия пути к классам (который ранее был под c:/project/lib/*.jars
, преобразованным в D:/ext_jars
).
Пожалуйста, помогите мне, как я могу установить этот внешний каталог в пути к классам build.xml?
Мой код в: build.xml
<?xml version="1.0"?>
<project name="MyProject" default="deploy" basedir="." >
<property file="manifest.mf" />
<property name="dir.src" value="src" />
<property name="dir.build" value="bin" />
<property name="dir.dist" value="dist/MyProject" />
<property name="dir.lib" value="lib" />
<!-- Creates the output directories -->
<target name="prepare">
<mkdir dir="${dir.build}" />
<mkdir dir="${dir.dist}" />
<mkdir dir="${dir.dist}/${dir.csvdata}" />
<mkdir dir="${dir.dist}/${dir.MH}" />
</target>
<target name="clean" description="Remove all generated files.">
<delete dir="${dir.build}" />
<delete dir="${dir.dist}" />
</target>
<path id="build.classpath">
<fileset dir="${dir.lib}">
<include name="**/*.jar" />
<include name="**/*.zip" />
</fileset>
</path>
<path id="build.classpath.ref">
<fileset dir="D:/ext_jars">
<include name="**/*.jar" />
<include name="**/*.zip" />
</fileset>
</path>
<target name="compile" depends="prepare" description="Compile all source code.">
<!--<javac srcdir="${dir.src}" destdir="${dir.build}" debug="true">-->
<javac destdir="${dir.build}" debug="true">
<classpath refid="build.classpath" />
<classpath refid="build.classpath.ref" />
<src path="src"/>
</javac>
<copy todir="${dir.build}">
<fileset dir="${dir.src}">
<exclude name="**/*.java" />
</fileset>
</copy>
</target>
<pathconvert property="classpath" refid="build.classpath">
</pathconvert>
<pathconvert property="classpath" refid="build.classpath.ref">
</pathconvert>
<target name="jar" depends="compile" description="Generates ${project.name}.Jar in the 'dist' directory.">
<jar jarfile="${dir.dist}/${ant.project.name}.jar">
<fileset dir="${dir.build}" includes="**/*.*" />
<manifest>
<attribute name="Class-Path" value="${Class-Path}" />
<attribute name="Main-Class" value="${Main-Class}" />
</manifest>
</jar>
</target>
<target name="deploy" depends="clean,jar">
<copy todir="${dir.dist}/${dir.lib}">
<fileset dir="${dir.lib}">
<include name="**/*.jar" />
<include name="**/*.zip" />
</fileset>
</copy>
</target>
Использование этого кода. После запуска проекта он работает хорошо, но после запуска jar, созданного с помощью этого кода, он не запускается, и возникает следующая ошибка:
Exception in thread "main" java.lang.NoClassDefFoundError: dowlibpkg/DowLib
at mypkg.MainApp.main(MainApp.java:109)
Caused by: java.lang.ClassNotFoundException: dowlibpkg.DowLib
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 1 more
ТАК созданный Jar не работает../ Я хочу, чтобы он был запущен, может ли кто-нибудь помочь мне
==============================================================
manifest.mf
Версия манифеста: 1.0 Путь к классу: lib/org.springframework.asm-3.0.1.RELEASE \ lib/org.springframework.beans-3.0.1.RELEASE \ lib/org.springframework.context-3.0.1.RELEASE \ lib/org.springframework.core-3.0.1.RELEASE \ lib/org.springframework.expression-3.0.1.RELEASE \ lib/org.springframework.oxm-3.0.1.RELEASE \ lib/org.springframework.web -3.0.1.RELEASE Основной класс: myProject.MainApp
basedir
, которое указывается следующим образом:the base directory from which all path calculations are done. This attribute might be overridden by setting the "basedir" property beforehand. When this is done, it must be omitted in the project tag. If neither the attribute nor the property have been set, the parent directory of the buildfile will be used.
ant. apache.org/manual/using.html По сути, это означает, что проект Ant всегда связан с расположением файла build.xml или с его базовым свойством... - person ee.   schedule 10.02.2012relative=false
в элементе Ant, можно переопределить это поведение относительного пути, чтобы он стал абсолютным путем... Но я не уверен... Возможно, вам потребуется проверить документацию Ant о том, где можно найти атрибутrelative
в какой элемент муравья... - person ee.   schedule 10.02.2012