私はJava初心者で、Eclipse Junoを介してGUIのSWTを使用して簡単なJavaプログラムを作成しました。コードは機能しており、プログラムはEclipse内で実行できるため、Eclipseの外で実行できるようにコンパイルして実行可能なjarファイルにしました。ターミナルを使用して実行しようとすると、このエラーが発生しました。
Exception in thread "main" Java.lang.UnsatisfiedLinkError: Could not load SWT library. Reasons:
no swt-gtk-4233 in Java.library.path
no swt-gtk in Java.library.path
Can't load library: /home/abody/.swt/lib/linux/x86_64/libswt-gtk-4233.so
Can't load library: /home/abody/.swt/lib/linux/x86_64/libswt-gtk.so
at org.Eclipse.swt.internal.Library.loadLibrary(Library.Java:331)
at org.Eclipse.swt.internal.Library.loadLibrary(Library.Java:240)
at org.Eclipse.swt.internal.C.<clinit>(C.Java:21)
at org.Eclipse.swt.internal.Converter.wcsToMbcs(Converter.Java:63)
at org.Eclipse.swt.internal.Converter.wcsToMbcs(Converter.Java:54)
at org.Eclipse.swt.widgets.Display.<clinit>(Display.Java:133)
at Class1.main(Class1.Java:12)
そのため、libswt-gtk-4233.so
およびその他のファイルが見つからないようです。ただし、.swt
フォルダーを見ると、libswt-gtk-3740.so
ではなく4233
がありました。
そのため、より最新のファイルを見つけようとしています。それはどういう意味ですか、SWTを更新する必要がありますか?どうしたの?
ファイルを/usr/lib/jni
ディレクトリに配置するために、swtへのシンボリックリンクを作成する必要があります。このサイトで解決策を見つけました: EclipseはSWTライブラリをロードできません 。
次のコマンドを使用します。
ln -s /usr/lib/jni/libswt-* ~/.swt/lib/linux/x86_64/
そのため、libswt-gtk-4233.soおよびその他のファイルが見つからないようです。ただし、.swtフォルダーを見てみると、4233ではなくlibswt-gtk-3740.soがありました。
プラグイン自体にはそれらのライブラリがあります。
プロジェクトを右クリックします。
->プロパティ->ビルドパス
一度[Java Build Path]ウィンドウを開くと、Projectsのタブにorg.Eclipse.swt。%GUIが含まれます%。%PLATFORM%
(インポートしたプロジェクト)
クリックして展開します。
ネイティブライブラリの場所を編集します。
ワークスペースを選択してから、プロジェクト全体org.Eclipse.swt。%GUI%。%PLATFOM%
[OK]を押すと完了です。
約:
..soコンパイルして、実行可能なjarファイルにして、Eclipseの外部で実行できるようにしました。ターミナルを使用して実行しようとすると、このエラーが発生しました。
端末ではなくEclipseでどのように実行したかわかりません。だから、私はあなたが別のプラットフォームでそれをするつもりだったと思った。 (私のような)新しいものについては、以下を読んでください: Standard Widget Toolkit
.. SWTを呼び出すプログラムは移植可能ですが、ツールキットの実装は、その一部がJavaで記述されていても、プラットフォームごとに固有です...
SWTは、サポートが必要なすべての新しいGUIライブラリに移植する必要があります。 SwingやAWTとは異なり、SWTはJavaリリースの一部ではないため、SWTはすべてのJavaサポートプラットフォームで利用できるわけではありません...
SWT実装はプラットフォームごとに異なるため、プラットフォーム固有のSWTライブラリ(JARファイル)を各アプリケーションとともに配布する必要があります。
したがって、プロジェクトを特定のプラットフォームにエクスポートする場合は、そのプラットフォームでIDEを開き、プラグインのインポートを繰り返しますが、今回はそのプラットフォームに対して、ビルドパス-関連のないプロジェクト(プロジェクトを削除しない)。そして今、あなたはその特定のプラットフォーム用にコンパイルすることができます。
あるプラットフォームから別のプラットフォームに切り替える場合、プロジェクトに開発するときに、ビルドパスを編集して、そこにある無関係なプロジェクトを削除するだけです。