1

ソース ファイルをコンパイルして jar を作成するための build.xml を作成しました。ビルドを実行するとjarが作成されますが、jarは次の例外で実行されます

 [java] Exception in thread "main" java.lang.NoClassDefFoundError: com/mysql
/jdbc/exceptions/MySQLIntegrityConstraintViolationException

ビルドファイルは次のとおりです。

<?xml version="1.0"?>
<project name="NmzAzzist" basedir="." default="main">
    <property name="src.dir" value="../Source/NMSAzzist/src" />
    <property name="build.dir" value="ReleaseBuild/classes" />
    <property name="jar.dir" value="ReleaseBuild/ReleaseJars" />

    <path id="master-classpath">
        <fileset dir="Libraries">
            <include name="*.jar" />
        </fileset>

    </path>

    <patternset id="meta.files">
        <include name="**/*.xml" />
        <include name="**/*.properties" />
        <include name="**/*.mib" />
    </patternset>

    <!-- Simply extends the compile.classpath with your own compiled classes. -->

    <target name="clean" description="Clean output directories">
        <delete dir="${build.dir}" />
    </target>

    <target name="build" description="Compile source tree java files">
        <echo>Compiling the source code</echo>
        <mkdir dir="${build.dir}" />
        <javac destdir="${build.dir}" source="1.5" target="1.5"
            includeantruntime="false">
            <src path="${src.dir}" />
            <classpath refid="master-classpath" />
        </javac>
    </target>

    <target name="copy.meta.files">
        <copy todir="${build.dir}">
            <fileset dir="${src.dir}">
                <patternset refid="meta.files" />
            </fileset>
        </copy>
    </target>

    <target name="jar" depends="build, copy.meta.files">
        <mkdir dir="${jar.dir}" />
        <echo>building jar!</echo>
        <jar destfile="${jar.dir}/${ant.project.name}.jar" basedir="${build.dir}">
            <manifest>
                <attribute name="Main-Class"
                    value="com.ushustech.nmsazzist.NMSAzzistApp" />
            </manifest>
        </jar>
    </target>

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


</project>

どうすればこれを解決できますか?

4

1 に答える 1

1

上記のエラーは、jar エラーではなく Java エラーです。クラスパスにmysql-connector-java-5.1.*.jarが含まれていないため、スクリプトが失敗します。

コンパイル時にクラスが存在するが、実行時にアプリケーションに見つからない場合、NoClassDefFoundException が発生します。

Javaタスクを変更し、クラスパス参照も含めます...うまくいけば、これはうまくいくでしょう

<java jar="${jar.dir}/${ant.project.name}.jar" fork="true" classpathref="master-classpath"/>
于 2012-11-30T16:09:12.110 に答える