47

ダウンロードした外部jarに依存する実行可能なjarプログラムを構築しようとしています。私のプロジェクトでは、それらをビルド パスに含め、Eclipse 内で実行およびデバッグできます。

それをjarにエクスポートしようとすると、プログラムを実行できますが、外部jarからの関数呼び出しとクラスを含むボタンを押しても実行できません。環境変数 (Windows XP) の CLASSPATH を編集して、すべての外部 jar のパスを含めましたが、機能しません。

注意すべき点は、実行可能 jar のエクスポート中にコンパイル警告が表示されたことですが、警告に関する説明は表示されません。

Eclipseを使用して外部jarプログラムを含める方法について、誰かが親切に完全なガイドを提供してくれませんか?

4

6 に答える 6

36

Eclipse 3.5には、必要なライブラリを実行可能なjarにパッケージ化するオプションがあります。「ファイル」->「エクスポート...」実行可能なjarを選択し、「次へ」をクリックします。実行可能なjarエクスポートウィンドウには、必要なライブラリをjarにパッケージ化することを選択できるラジオボタンがあります。

于 2010-04-29T17:53:19.633 に答える
14

これを行うには、 jarのマニフェストを作成します。Class-Pathヘッダーを見てください。Eclipse には、エクスポート時に独自のマニフェストを選択するオプションがあります。

別の方法として、アプリケーションを呼び出すときに依存関係をクラスパスに追加します。

win32: java.exe -cp app.jar;dependency.jar foo.MyMainClass
*nix:  java -cp app.jar:dependency.jar foo.MyMainClass
于 2009-02-02T12:08:34.557 に答える
8

プロジェクトの jar を実行可能な jar に含める方法:

私はEclipseバージョンを使用しています:Ubuntu 12.10で実行されている3.7.2。また、 from コマンド ラインを実行して、他のインポートされた jar を抽出して jar を作成build.xmlできるようにする方法も示します。ant jar

基本的に、ライブラリを jar にインポートする build.xml を作成するように Eclipse に依頼します。

  1. Eclipse を起動し、新しい Java プロジェクトを作成し、新しいパッケージ 'mypackage' を作成し、メイン クラスを追加しますRunner 。このコードをそこに挿入します。

    ここに画像の説明を入力

  2. ここで、MySQL データベースに接続するための Java を記述できるmysql-connector-java-5.1.28-bin.jar from Oracleを含めます。これを行うには、プロジェクトを右クリック -> プロパティ -> Java ビルド パス -> 外部 Jar を追加 -> mysql-connector-java-5.1.28-bin.jar を選択します。

  3. Eclipse 内でプログラムを実行すると、プログラムが実行され、ユーザー名/パスワードが無効であることが通知されます。これは、Eclipse が jar で適切に構成されていることを意味します。

  4. Eclipse でFile-> Export-> Java->に移動しRunnable Jar Fileます。次のダイアログが表示されます。

    ここに画像の説明を入力

    「ant スクリプトとして保存」チェックボックスを必ず設定してください。ant jarこれが、コマンドラインを使用して後で実行できるようにするものです。

  5. 次に、ターミナルに移動して、ant スクリプトを確認します。

    ここに画像の説明を入力

ご覧のとおり、jar を実行しましたが、含まmysql-connector-java-5.1.28-bin.jarれている が内部に埋め込まれているため、エラーは発生しませんでしたHello.jar

Hello.jar: の中 vi Hello.jarを見ると、多くの参照が表示されます。com/mysql/jdbc/stuff.class

ant jarコマンドラインでこれをすべて自動的に行うには: 名前をbuildant.xmlbuild.xml変更し、ターゲット名を からcreate_run_jarに変更しjarます。

次に、MyProjectあなたの内側からタイプant jarしてブームします。MyProject 内に jar があります。を使用して呼び出すことができjava -jar Hello.jar、すべて機能します。

于 2013-12-30T00:21:12.987 に答える
5

Ant スクリプト(Eclipse に付属) を使用して JAR ファイルを生成することをお勧めします。この JAR 内には、すべての依存ライブラリを含めることができます。

ファイルシステム内のファイルを指すように MANIFEST の Class-path ヘッダーを設定することもできますが、これは良い方法ではありません。

Ant build.xml スクリプトの例:

<project name="jar with libs" default="compile and build" basedir=".">
<!-- this is used at compile time -->
<path id="example-classpath">
    <pathelement location="${root-dir}" />
    <fileset dir="D:/LIC/xalan-j_2_7_1" includes="*.jar" />
</path>

<target name="compile and build">
    <!-- deletes previously created jar -->
    <delete file="test.jar" />

    <!-- compile your code and drop .class into "bin" directory -->
    <javac srcdir="${basedir}" destdir="bin" debug="true" deprecation="on">
        <!-- this is telling the compiler where are the dependencies -->
        <classpath refid="example-classpath" />
    </javac>

    <!-- copy the JARs that you need to "bin" directory  -->
    <copy todir="bin">
        <fileset dir="D:/LIC/xalan-j_2_7_1" includes="*.jar" />
    </copy>

    <!-- creates your jar with the contents inside "bin" (now with your .class and .jar dependencies) -->
    <jar destfile="test.jar" basedir="bin" duplicate="preserve">
        <manifest>
            <!-- Who is building this jar? -->
            <attribute name="Built-By" value="${user.name}" />
            <!-- Information about the program itself -->
            <attribute name="Implementation-Vendor" value="ACME inc." />
            <attribute name="Implementation-Title" value="GreatProduct" />
            <attribute name="Implementation-Version" value="1.0.0beta2" />
            <!-- this tells which class should run when executing your jar -->
            <attribute name="Main-class" value="ApplyXPath" />
        </manifest>
    </jar>
</target>

于 2009-02-04T15:22:34.850 に答える
2

fat-jar 拡張機能を試してください。jar 内のすべての外部 jar が含まれます。

于 2009-02-02T12:04:16.110 に答える
0

@ java-jar-ignores-classpath-回避策を見てください

于 2010-02-17T08:42:51.193 に答える