多分私は正しく理解していませんが、私はあなたのクラスパス上の他のJARファイルでプログラムを実行することを望んでいると思います。
ここで、A.jarにコアがあり、B.jarにライブラリがいくつかあるとしましょう。
main.class.Name
があなたのメインクラスの名前で、あなたのコマンドライン引数のすべてがどこに行く
args
がある
java -cp A.jar:B.jar main.class.Name args
:;:あなたは、この(Windows上で置き換える)のようなプログラムを実行する可能性があります。
ます。また、このようなあなたのmanifest.mf
にMain-Class
とClass-Path
属性を置くことができます。
Class-Path: B.jar
Main-Class: main.class.Name
は、その後、あなたがこのようなプログラムを実行することができます。
java -jar A.jar args
はあなたに真実を伝えるために、私が使用しました私のアプリケーションを1つのJARファイルとして配布し、すべての依存関係を1つの巨大なJARファイルに展開してラップするのはすばらしかったと思います。問題はいくつかのアプリケーションがかなりの依存関係で終わることで、私のコードに変更するたびに、依存関係の何も変更されていなくても、すべての依存コードを配布しなければならないということでした。これは、些細な変更だけであっても、巨大なJARファイルを配布することを意味していました。
マニフェスト属性を使用することで、単一のJARファイルと全く同じ方法で実行できるアプリケーションを配布することができます(一部のシステムでダブルクリックするか、単純な "java -jar
")。後続のソフトウェアリリースで複製ライブラリのすべてを転送しないことで、時間と帯域幅を節約できます。
依存するJARをそれぞれ独自のディレクトリに置くこともできます(今はlib
としましょう)。Class-Path
を変更して、すべてのJARパスが "lib/B.jar
"のようにします。そうすれば、多くの小さなJARファイルでいっぱいになっているメインプログラムのディレクトリに終わることはありません。
他の瓶が入っている瓶を作ったことを意味しますか?または、あなたはあなたの瓶に依存する瓶を入れたいと思っていますか?何が問題なのですか? – djna
私は質問を更新しました:) –