2

「hello world!」を表示する単純な Java アプリがあります。コンソールで。app.jar にパックされています。瓶の構造:

main/Hello.class - 単一の println メソッドを使用したメイン クラス

META-INF/MANIFEST.MF

マニフェスト ファイルには次のものが含まれます。

Manifest-Version: 1.0
Main-Class: main.Hello

すべてがうまくいきます。

しかし、問題が始まるよりも依存関係がある場合。よくわかりませんが、この場合、すべてのライブラリをjarファイルに入れる必要があると思います。それらを META-INF/lib に配置する場合、マニフェストで「Class-Path」を指定する必要があります。「クラスパス」はどのように見えますか?

PS 似たような質問がいくつかありますが、適切な答えが見つかりませんでした。

4

2 に答える 2

1

私はANTビルドスクリプトを使用して、アプリケーションと必要なすべてのjarファイルをパッケージ化する傾向があります。あなたがそれをきちんと動かせば、これは人生をずっと楽にしてくれると思います。

build.xmlファイルは次のようになります。

<project default="create_run_jar" name="Create Runnable Jar for MyProject">
    <!--ANT 1.7 is required -->
    <target name="create_run_jar">
        <jar destfile="my-runnable-jar.jar">
            <manifest>
                <attribute name="Main-Class" value="my.MainClass"/>
                <attribute name="Class-Path" value="."/>
            </manifest>
            <fileset dir="E:/path/to/my/project/bin"/>
            <fileset dir="E:/path/to/my/project/classes"/>
            <zipfileset src="E:/path/to/library/some-library.jar"/>
        </jar>
    </target>
</project>

Eclipseを使用している場合は、ファイル/エクスポート... /実行可能なjarファイルを簡単に実行でき、すべて(ANT build.xmlの生成を含む)を実行することに注意してください。

于 2010-07-27T12:54:58.067 に答える
1

ライブラリを展開してプロジェクトに統合する場合、特別なことを指定する必要はありません。これを行うと、「メイン」フォルダーが必要になり、外部ライブラリとして org.apache.foo がある場合は、最上位に「org」フォルダーも作成されます。

于 2010-07-27T12:47:34.527 に答える