0

Eclipse で Java プロジェクトから実行可能ファイルを作成しようとしています。最初のステップは JAR ファイルの作成であることを理解しているので、サイトを検索した後、次の Ant build.xml をコンパイルできました。

<?xml version="1.0" encoding="UTF-8"?>
<!-- Configuration of the Ant build system to generate a Jar file --> 
<project name="GraphBuild" default="CreateJar">
  <target name="CreateJar" description="Create Jar file">
     <manifest file="MANIFEST.MF">
        <attribute name="Main-Class" value="GraphEditor" />
     </manifest>
     <jar jarfile="GraphEditor.jar" basedir="." includes="*.class" 
          manifest="MANIFEST.MF" />
  </target>
</project>

次のコマンドを使用して GraphEditor.jar を実行すると

java -jar GraphEditor.jar

java.lang.NoClassDefFoundError私のプロジェクトにはいくつかの参照ライブラリがあり、ローダーがそれらを見つけることができないように見えるため、受け取りました。-cp 変数を設定しようとしましたが、うまくいきませんでした。

ありがとうございます。

4

4 に答える 4

1

Maven を使用すると、すべての依存関係を含む実行可能な jar を簡単に作成できます。たぶん、ant の代わりに maven を使いたいでしょう。 Maven を使用して依存関係を持つ実行可能な JAR を作成するにはどうすればよいですか?

于 2013-06-09T17:50:46.590 に答える
0

依存するjarを適切に添付し、classファイルのディレクトリを正しく指す必要があります。

何かのようなもの:

<jar destfile="${jar.dir}/${ant.project.name}.jar" basedir="${class.dir}">
    <manifest>
        <attribute name="Main-Class" value="${main-class}"/>
        <attribute name="Class-Path" value="${lib.dir}/lib1.jar ${lib.dir}/lib2.jar"/>
    </manifest>
</jar>
于 2013-06-09T17:48:21.693 に答える
0

あなたの質問を正しく読んだら、まず、-cp と -jar は使用できないと言いたいです。たとえば、jar を作成するときにクラスパスを宣言する場合 (ant @see http://www.tomred.net/tomred-java-jar-meta-inf-manifest.htmlで)、MANIFEST に含まれるようにする必要があります。 -cp を含めないでください。

クラスパスを使用して jar をテストする場合は、以下のように -jar を -cp に置き換えます。

java -cp lib/;deps/;GraphEditor.jar org.package.to.RunClass

単純に -jar と -cp は乗算排他的です。ノート: ";" Windows での分離 ":" Linux で

于 2013-06-11T09:36:33.153 に答える
0

依存する jar ファイルを含む Class-Path 変数を適切な場所に追加して試してみることはできますか?

于 2013-06-09T17:56:10.360 に答える