2017-07-13 4 views
3

jarbundlerを使用してantで.appファイルを作成しようとしています。しかし、私は次のエラーを取得しています:私のbuild.xmlはこのようになりますJarbundlerをantで使用する

taskdef class net.sourceforge.jarbundler.JarBundler cannot be found using the classloader AntClassLoader[/Users/Ida/NetBeansProjects/supernova/build/classes/lib/jarbundler-core-3.3.0.jar]

<path id="classpath"> 
     <fileset dir="dist/lib"> 
      <include name="*.jar"/> 
     </fileset> 
    </path> 

    <target name="clean"> 
     <delete dir="build"/> 
    </target> 

    <target name="compile"> 
     <mkdir dir="build/classes"/> 
     <javac srcdir="src" destdir="build/classes"> 
      <classpath> 
       <path refid="classpath"/> 
       <path location="${jar.dir}/${ant.project.name}.jar"/> 
      </classpath> 
     </javac> 
     <copy todir="build/classes"> 
      <fileset dir="src" excludes="**/*.java"/> 
     </copy> 
    </target> 

    <target name="dist"> 
     <mkdir dir="build/classes/lib"/> 
     <copy flatten="true" todir="build/classes/lib" includeemptydirs="false"> 
      <fileset dir="dist/lib"> 
       <include name="*.jar"/> 
      </fileset> 
     </copy> 
     <mkdir dir="build/jar"/> 
     <jar destfile="build/jar/SuperNova.jar" basedir="build/classes"> 
      <fileset dir="dist/lib"> 
       <include name="*.jar"/> 
      </fileset> 
      <manifest> 
       <attribute name="Main-Class" value="com.lumenradio.supernova.SuperNovaApp"/> 
      </manifest> 
     </jar> 
    </target> 

    <target name="jar"> 
     <mkdir dir="build/jar"/> 
     <jar destfile="build/jar/SuperNova.jar" basedir="build/classes"> 
      <fileset dir="dist/lib"> 
       <include name="*.jar"/> 
      </fileset> 
      <manifest> 
       <attribute name="Main-Class" value="com.lumenradio.supernova.SuperNovaApp"/> 
      </manifest> 
     </jar> 
    </target> 

    <target name="run" depends="jar"> 
     <java fork="true" classname="com.lumenradio.supernova.SuperNovaApp"> 
      <classpath> 
       <path refid="classpath"/> 
       <path location="build/jar/SuperNova.jar"/> 
      </classpath> 
     </java> 
    </target> 



    <target name='package-app'> 
     <taskdef name="jarbundler" classname="net.sourceforge.jarbundler.JarBundler"> 
      <classpath> 
       <pathelement location="build/classes/lib/jarbundler-core-3.3.0.jar"/> 
      </classpath> 
     </taskdef> 
     <jarbundler dir="dist" name="SuperNova" 
      mainclass="com.lumenradio.supernova.SuperNovaApp" 
      jar="build/jar/SuperNova.jar"/> 
    </target> 

誰もが今、なぜ私はこのエラーを取得していないとどのように私はそれを解決する必要がありますか?あなたの助けのための

EDIT

感謝。私は今の.appファイルを構築することができますが、私はそれを実行しようとしているとき、私は次のエラーを取得する:

Error: Could not find or load main class com.lumenradio.supernova.SuperNovaApp

私の目標は、次のようになります。私は取るにjarファイルをダウンロードし

<target name='package-app'> 
     <taskdef name="jarbundler" classpath="build/classes/lib/jarbundler-core-3.3.0.jar" 
     classname="com.ultramixer.jarbundler.JarBundler"/> 

     <jarbundler dir="dist" name="SuperNova" 
      jar="build/jar/SuperNova.jar" 
      mainclass="com.lumenradio.supernova.SuperNovaApp" 
      icon="SuperNova copy.icns" 
      stubfile="universalJavaApplicationStub" 
      useJavaXKey="true" 
      jvmversion="1.7+"/> 
    </target> 

答えて

2

見て、私は問題があなたのclassnameが間違っていると思う。 JarBundlerクラスはcom.ultramixer.jarbundler.JarBundlerに位置するので、代わりにこれを試してされています。あなたは、単一のライブラリをロードしているので、

<taskdef name="jarbundler" classname="com.ultramixer.jarbundler.JarBundler"> 
     <classpath> 
      <pathelement location="build/classes/lib/jarbundler-core-3.3.0.jar"/> 
     </classpath> 
    </taskdef> 

はまた、あなたができるので、代わりにtaskdef年代classpath属性のネストされたクラスパスを使用する必要はありませんややそれを簡素化:

<taskdef 
     name="jarbundler" 
     classname="com.ultramixer.jarbundler.JarBundler" 
     classpath="build/classes/lib/jarbundler-core-3.3.0.jar" 
    /> 
+2

新しい問題が発生したため、元の投稿を編集しました。 –

+1

プロジェクトのjarファイルに似たパスの問題のように見えますが、そのjarファイルにアクセスすることができないと、問題の内容が正確にはわかりません。 – CAustin

+0

以下の第2の問題の答えを参照してください。 –

0

問題はlibフォルダにjarファイルと転送先に存在しないということだったので、私は私の穴のbuild.xmlファイルを編集して、それを解決しただけのようになります。

<target name='package-app' depends='clean, jar'> 
    <taskdef name="jarbundler" classpath="dist/lib/jarbundler-core-3.3.0.jar" 
    classname="com.ultramixer.jarbundler.JarBundler"/> 

    <jarbundler dir="dist" name="SuperNova" 
     jar="dist/SuperNova.jar" 
     mainclass="com.lumenradio.supernova.SuperNovaApp" 
     icon="SuperNova copy.icns" 
     stubfile="universalJavaApplicationStub" 
     useJavaXKey="true" 
     jvmversion="1.7+"/> 

    <mkdir dir="dist/SuperNova.app/Contents/Resources/Java/lib"/> 
    <copy flatten="true" todir="dist/SuperNova.app/Contents/Resources/Java/lib" includeemptydirs="false"> 
     <fileset dir="dist/lib"> 
      <include name="*.jar"/> 
     </fileset> 
    </copy> 
</target> 

今は完璧に動作します。

関連する問題