質問

免責事項:

これは、.NET GUI が JAVA を回避しようとする典型的なケースです。

問題の説明:

JFace と SWT を使用して非常に単純な GUI を構築しようとしています。コードは簡単です (チュートリアルがたくさんあります)。それほど単純ではないのは、JFace と SWT をプラグイン プロジェクトの外で動作させることができないようです。

CLASSPATH (コンピューター --> プロパティ --> 詳細設定 --> 環境変数から) に「C:/eclipse 3.5/plugins」を入れているので、プロジェクトで JFace と SWT を手間なく使用できると期待しています。そして、私のPATH(確かにローカルユーザーとグローバルPATHの両方)で見つけることができたすべてのswt-*.dllは次のようになります。 この記事 「SWT と JFace のインストール」ボックスに が表示されます。

問題は、buildpath --> ライブラリ --> 外部 jar の追加から jar を直接参照しない限り、eclipse.org から何もインポートできないことです (ビルドするには次の jar を追加する必要があります: org.eclipse.swt.win32.win32.x86_3.5.1.v3555a.jar, org.eclipse.jface_3.5.1.M20090826-0800.jar)。これを実行すると、正常にビルドされますが、「Java アプリケーション」として実行すると、次のエラーが発生します ( 実行 他に何か?):

Exception in thread "main" java.lang.NoClassDefFoundError: org/eclipse/core/runtime/IProgressMonitor
    at demo.ui.test.EntryPoint.main(EntryPoint.java:18)
Caused by: java.lang.ClassNotFoundException: org.eclipse.core.runtime.IProgressMonitor
    at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
    at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
    ... 1 more

これをデバッグしようとしましたが、基本的にはインスタンス化しようとするとすぐにスローされます ApplicationWindow クラス (org.eclipse.jface.window.ApplicationWindow)。エラーを再現しようとして、すべてのコードをコメントアウトし、メインの次のコードに置き換えました。最初の行で上記と同じエラーがスローされます。

ApplicationWindow w = new ApplicationWindow(null); //<-- error on this line
w.setBlockOnOpen(true);
w.open();
Display.getCurrent().dispose();

質問:

質問1:上記のエラーを修正して(何が起こっているのかを理解したいのですが)どうすれば実行できるでしょうか?

質問2:私のプロジェクトに瓶が表示されない理由とその作り方を教えてください。

Java と Eclipse に精通していないため、おそらく非常に些細な何かが欠けていると思います。ご協力をよろしくお願いいたします。

編集:他の人も同じ問題を抱えているようです --> http://www.eclipsezone.com/eclipse/forums/t60528.html - どのように解決したかはあまり明確ではありませんが、支援を感謝します

役に立ちましたか?

解決

IProgressMonitor インターフェイスは、使用する 2 つの jar では使用できません。また、置く必要があります org.eclipse.quinox.common クラスパス上のプラグイン。 IProgressMonitor Eclipse 環境全体を実行していなくても使用できます。

(これはあなたが参照した記事の解決策です。当初、IProgressMonitor は org.eclipse.core.runtime プラグイン内にあると考えていましたが、「」で説明されているように org.eclipse.quinox.common に移動されました。 バグ #122935)

他のヒント

上記エコーピーターのポイントは、私はいつも物事が(特にJFaceのために)実行されている取得するJARファイルの束を追加する必要があります。一般的に、私は必要があります。

./org.eclipse.core.commands_3.3.0.I20070605-0010.jar
./org.eclipse.core.runtime_3.3.100.v20070530.jar
./org.eclipse.equinox.common_3.3.0.v20070426.jar
./org.eclipse.jface_3.3.1.M20070910-0800b.jar
./org.eclipse.osgi_3.3.2.R33x_v20080105.jar
./org.eclipse.ui.forms_3.3.0.v20070511.jar

あなたはどのようなJARファイルでのライブどのファイルヘルプスポットにjarfinderのようなものを使用することができます。 Windowsでは、私は、ファイルシステム上のEclipseフォルダの下のzip / jarファイルでIProgressMonitor.class、たとえば、探すために検索機能を使用して覚えているようだ - 。時々、実際のJARファイルを追跡するのは難しいことができます。

JAR、すすぎと繰り返しを追加/追跡、失敗したものを見て

私は通常仕事ます。

Eclipseは、独自のスタンドアローンのアプリをやって、あなたのための問題の多くの世話をするように RCP /プラグインを行うと、この余分な荷物が付属していますが、そうです、そのあなたがに固執する場合は、適切なスタンドアロンのネイティブ探してGUIを持っていることは本当にすてきなそれ。 I通常、セットアップバニラ(非プラグイン)Eclipseプロジェクトので、それはあなたが(クラスパスに追加JARファイルを手動)、これらの問題に直面して強制的に。それはまた、便利になると、あなたのプロジェクトを配布したいときます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top