2012-01-17 18 views
6

他のJARライブラリを含む実行可能ファイルJARを作成したいとします。しかし、JARを実行すると、クラスパスの問題が発生します。他のライブラリファイルを含むJARファイルを作成する

クラスパスの問題を解決するにはどうすればよいですか?

+0

* "私は、他のjarライブラリを含む実行可能なJarを1つ作成したい" *あなたが望むものは、何よりも重要ではありません。 [JWS](http://stackoverflow.com/tags/java-web-start/info)または別のタイプのインストーラを使用して複数のJarをデプロイすることは、多くの場合うまく機能することがわかりました。 –

+0

重複した質問http://stackoverflow.com/questions/5424761/java-packaging-building-common-techniques-jar-file-specifically/5424847#5424847 –

答えて

9

私はあなたがこのように試すことができると思います。

あなたの質問には、簡単な例があります。まず、D:\javademoのようなプロジェクトディレクトリがあると仮定します。この作業ディレクトリでは、メインクラスHelloWorld.javaを作成し、thtatにはcommons-lang.jarのような他のJARファイルが含まれています。ここで、メインクラスのHelloWorldとcommons-lang.jarをtest.jarファイルにアーカイブする必要があります。

私たちは私たちのクラスパスと、このようなメインクラス を指定することができるようにまず我々はマニフェストファイルを編集する必要があります。

Manifest-Version: 1.0 
Created-By: tony example 
Class-Path: test.jar commons-lang.jar 
Main-Class: org.tony.java.HelloWorld 

私たちは、このファイルtest.mfと名付けました。そして、それはJARファイルtest.jarを生成します

jar -cvfm test.jar test.mf -C ./ . 

:今、私たちはこのような私たちのJARファイルを生成するjarコマンドを使用します。このコマンドを使用すると、javaコマンドを使用してこのメ​​インクラスを実行できます。

java -jar test.jar 

これは私のソリューションです。私はそれがあなたに役立つ何かを与えることを願って...

+0

jarファイルにライブラリの依存関係を追加する方法を混乱させていただきありがとうございます –

0

サードパーティライブラリを使用する必要があります。たとえば、OneJarとなります。標準JREのツールの代わりに、OneJarツール(Antタスクのような)を使用して最終的なJARファイルを構築する必要があります。

このようなJARファイルを実行すると、OneJarのサービスクラスがあなたの代わりに起動されます。このクラスは、クラスと同様に内部にパッケージ化されたJARファイルをロードし、メインクラスを実行します。

既によく似た質問と回答があります。例:スタックオーバーフローの質問Easiest way to merge a release into one JAR file

+0

私はそのことを試みましたが、動作しませんでした。 –

+0

いつ試しましたか? –

+0

私はこれを投稿する前に何度も試みましたが、まだ動作していません。 –

関連する問題