他の人がライブラリとして使用するjarファイルを生成する必要があります(これを 'myLib.jar'と呼ぶことができます)ので、jarファイルを実行する必要はありません。ライブラリは他のサードパーティ製のjarファイルに依存していますが、myLib.jarを使ってBuildPathに組み込むことは期待できません。サードパーティ(jar)ライブラリを含むJavaライブラリを作成する
検索中、私はOneJarを見つけ、ページの上部に2つの手順を実行しました。
1. Download one-jar-appgen-0.97.jar
Generate application, build, and run it.
$ java -jar one-jar-appgen-0.97.jar
2. Enter project path (project name is last segment): c:/tmp/test-one-jar
Enter java package name: com.example.onejar
$ cd c:/tmp/test-one-jar
$ ant
$ cd build
$ java -jar test-one-jar.jar
test_one_jar main entry point, args=[]
test_one_jar main is running
test_one_jar OK.
Add source code to the src directory, library jars to the lib directory, and rebuild.
私は新しいプロジェクトで「myLib.jar」を含めるようにしようとしたとき、私は期待クラスを使用することができませんでしたので、残念ながら、これは私のために働いていませんでした。
そう...
Q1:OneJarにのみ実行可能なjarファイルを対象としていますか?そうでなければ、私は上記のことをどのように達成することができます。
Q2:OneJarが実行可能ファイルのみを対象としている場合、 'myLib.jar'ライブラリを作成する別の方法がありますか?
PS:私の質問を編集するには、さらに情報を追加する必要がある場合はお知らせください。
理由だけではなく、「myLib.jar」に独自のクラスをパッケージ化して、あなたの依存関係のユーザーに通知いませんでした。さらに良いことに、MavenやGradleのようなビルドツールを使用した場合、依存関係を宣言することで、ライブラリが含まれていると自動的に取得することができます。 – rmlan
理想的には、依存関係なしで、ビルダーパスにこのjarファイルを含める以外のことをユーザーが期待することなく、ただ1つのjarファイルを配布したいと思っていました。これが不可能な場合は、私はmavenのようなものを試してみるかもしれません。 – Mario
可能性があります(しばしば「シェーディング」と呼ばれるものを使用しています)が、それは必ずしもひどく頻繁に使用されるべきではありません。今日使用されている大半のオープンソースプロジェクトを見てみましょう:それらはすべてMavenのような依存関係宣言を提供するか、依存するすべての依存関係を個別のjar(つまり、単一のjarではない)として_zipアーカイブにパッケージ化します。単一のjarの問題は、バージョンとクラスパスの競合になり、見つけにくくなり、デバッグが難しくなります。 – rmlan