0

Antを使用して、クラスファイルと参照されたjarをコンパイルおよびjarするプロジェクトがあります。Eclipse のデフォルトの Java ビルダーによって生成されたクラス ファイルを使用して生成された jar ファイルは正常に動作しますが、ant を使用してソースをコンパイルし、結果を jar すると、「エラー: ファイルを開こうとしているときに予期しないエラーが発生しました ... ....jar" は、ターゲット ビルドで java -jar を実行すると発生します。誰が私が間違っているのか知っていますか? 以下は、ビルド xml の内容です。ここに私がantに渡す引数があります

-DInTouchV.SrcPath=${InTouchV.SrcPath} -DInTouchV.DropPath=${workspace_loc:/InTouchVTransferService/dist}

<project default="create_run_jar" name="Create Runnable Jar for Project InTouchVTransferService">
<!--this file was created by Eclipse Runnable JAR Export Wizard-->
<!--ANT 1.7 is required                                        -->
<property name="Version" value="1.3"></property> 
<tstamp>
    <format property="TODAY" pattern="yyyy-MM-dd HH:mm:ss" />
</tstamp>
<target name="Compile_Source">
    <javac srcdir="${InTouchV.SrcPath}/InTouchVTransferService/src"
                     destdir="${InTouchV.SrcPath}/InTouchVTransferService/bin"
                     classpath="${InTouchV.SrcPath}/lib/AtomClasses.jar"
                     debug="on"
                    includeantruntime="yes"
                    /> 
</target>
<target name="create_run_jar">
    <mkdir dir="${InTouchV.SrcPath}/InTouchVTransferService/bin"/>     
    <jar destfile="${InTouchV.DropPath}/InTouchVTransferClient.jar" filesetmanifest="mergewithoutmain">
        <manifest>
            <attribute name="Main-Class" value="com.emdat.inTouchV.main.Main"/>
            <attribute name="Class-Path" value="."/>
            <section name="common">
                <attribute name="Build-Version" value="${Version}"/>
                <attribute name="Build-Date" value="${TODAY}"/>
                <attribute name="Built-By" value="${user.name}"/>
                <attribute name="JVM Version" value="${java.runtime.name} - ${java.runtime.version}" />
            </section>
        </manifest>
        <fileset dir="${InTouchV.SrcPath}/InTouchVTransferService/bin"/>
        <zipfileset excludes="META-INF/*.SF" src="${InTouchV.SrcPath}/lib/AtomClasses.jar"/>
    </jar>
    <touch file="${InTouchV.DropPath}/Version.txt" />
    <echo file="${InTouchV.DropPath}/Version.txt">${Version}</echo>
</target>
</project>
4

1 に答える 1

0

問題が見つかりました。属性「JVM バージョン」にスペースが含まれています。スペースを削除すると、jar ファイルが正しく実行されます。eclipse + ant jar のデフォルトの Java ビルダーがスペースで機能する理由を正直に言えませんでしたが、ant ビルド + ant jar では機能しませんでした。少なくともその固定:D

于 2013-04-18T22:41:39.417 に答える