4

Gnome を使用する Ubuntu Linux で、Gnomes ファイル ブラウザーで jar ファイルをダブルクリックして Swing アプリケーションを実行すると、Java Plugin Framework (サブディレクトリにある) を介して動的に読み込まれる必要なライブラリが見つからないため、エラーが発生します。

実行可能 jar のマニフェスト ファイルに記載されているように、フレームワーク自体の基本ライブラリは正しく解決されています。ただし、フレームワークが起動すると、プラグインが見つかりません (私のプラットフォームを指定するプラグインでさえありません)。

経由で端末からアプリケーションを起動する

java -jar myjar.jar

シェル スクリプトをダブルクリックするだけでアプリケーションを実行できます。

ただし、ターミナル ウィンドウは避けたいと思います。(私は Windows の人です。Windows のユーザーを悩ませるので、Linux のユーザーを悩ませることはないかもしれません。)

この問題は、複数の Linux システムで再現可能です。Java がライブラリを正しく解決するために必要なことはありますか?

4

5 に答える 5

2

「Classpath:」属性を含む META-INF/MANIFEST.MF ファイルを jar に追加すると、必要な jar への相対パスを指定する値を使用できると思います (それらがスペースまたはコンマで区切られているかどうかはわかりません) )、それはうまくいくかもしれません。

于 2008-11-04T16:49:31.637 に答える
1

確認することをお勧めします: commons launcher。あらゆる種類の起動準備(クラスパスの設定などを含む)を行うために作成できるプレーンな実行可能ファイルが提供されます。ほとんどの場合、あなたの問題にはやり過ぎですが、試してみてください (スクリプトが嫌いなので、あなたの場合は試してみます)。

于 2008-11-04T18:37:21.420 に答える
0

起動するシェル スクリプトを作成し、それを呼び出してランチャーを作成することもできます。これは、いくつかのプラットフォームでそれを行う方法に関する簡単な「チュートリアル」です。

http://java.sys-con.com/node/37130

これがEclipseのやり方です。おそらくいくつかのアイデアが得られるでしょう:

http://help.eclipse.org/stable/index.jsp?topic=/org.eclipse.platform.doc.isv/reference/misc/launcher.html

幸運を!

于 2008-11-04T17:00:48.400 に答える
0

Java はクラスパス (jar1:jar2:jar3... など) で順番に jar をロードします。ほとんどの Java アプリケーションには、クラスパスとアプリケーションが必要とする jar のリストを指定することによってこれらすべてを設定する何らかのスクリプトが同梱されています。

あなたがしたいことは、すべてのJavaアプリケーションでロードしたいjarのコレクションをグローバルに指定することを意味し、アプリケーションに同梱されているライブラリと競合する可能性があるため、おそらくあまりお勧めできません.

これは実際には問題ではありません。おそらく最も簡単な解決策は、小さなシェル スクリプト ランチャーを一緒に使用することです。

于 2008-11-04T16:36:09.307 に答える
0

David が提案したように、 jar マニフェストClass-Pathを増やすために、jar にマニフェスト属性を追加できます。

于 2008-11-04T17:26:13.560 に答える