クロスアプリケーション/アプレットJavaアクセシビリティサービスの観点から、どのようにパッケージにリンクしますが、実行時にパッケージの存在/可用性(すでにロードされている)に基づいてオプションでのみアクションを実行しますか?
ここで私が興味を持っているのは、階級のアイデンティティの危機を解決する方法だと思いますただし、オブジェクトを共有する2つのアプリ間で問題が発生するのではなく、クラスローダーの上位レベルでロードされるサービスである必要があります。リフレクションが進むべき道のようですが、この方法で派生クラスを実装する方法や方法がわかりません。特定のオプションクラスから派生した特定のリスナーを追加する必要があります。アプレットクラスローダーを使用してリスナーをロードできますが、内部はまだ失敗します。JInternalFrameListenerを追加したいが、Swingが使用可能であるとは限らなかったとします。リフレクションを使用すると、リスナーを追加するメソッドを見つけることができますが、関連するクラスが見つからない場合に、フレームリスナーを作成して機能させるにはどうすればよいですか。基本クラスローダーで見つからないためです。クラスを確実にロードできるように、スレッドを作成し、swingを認識しているクラスローダーに対してsetContextClassLoaderを使用する必要がありますか?既存のスレッドにクラスローダーを設定しようとしても、うまくいかなかったようです。
問題の以前の説明 申し訳ありませんが、何を尋ねるか、これを明確にする方法がよくわからないので、少し混乱します。
クラスが別のクラスの機能を使用しているが、他のクラスが常に利用できるとは限らないとします。たとえば、これがJNLPアプリの場合は、JNLPからWebサイトを検索します。
ある段階で、JNLPに対してコンパイルするだけでは、JNLPが利用可能でない限りクラスがロードされないことを意味すると思ったので、このオプションのセクションを識別するために、単にそれをラップしtry{} catch( NoClassDefFoundError )
ました。
後で何かが変更され(おそらくjdkまたは??私は思い出せません)、私も。を使用する必要があるように見えましたtry{} catch( ClassNotFoundException )
。
今、私はこのアイデアを他のオプション機能に拡張したかったのですが、一貫して機能していないようです。
JRE1.3で実行するのと同じjarとクラスを使用してJRE1.6ランタイムでより高度な機能を追加したいとします。または、特定のGUIツールキットでいくつかのコントロールを処理したいとします。 SWTまたはoracle.formsのように使用できます。
これをより確実に行う方法はありますか?例外を発生させ、それをキャッチして常に無視するのは間違っているようです。
現在の問題は、oracle.formsに対してコンパイルできることですが、oracle.formsパッケージのオブジェクトが作成されていても、extにインストールされているアクセシビリティコンポーネントがoracle.formsクラスにアクセスできません。テストするためにfrmall.jarをextディレクトリにスローすると、同じパッケージのバージョンが異なるために、アクセシビリティコンポーネントが機能し、ロット全体が不安定になります。
クラスローダーが適切ではないという問題に巻き込まれているようです(??)。どうすれば正しいものを見つけることができますか?
編集:これまでの答えはちょっと面白いですが、私がなりたい場所に私を完全に導くことはできません。
GUIコンポーネントの場合、私は現在、次のようなファクトリの形式でコンパイルしています...
import oracle.forms.ui.*;
import java.awt.*;
static public IComponentNode newNode( INode parent, Component component ) {
System.out.println( component.getClass().toString() );
try{
if( component instanceof FormDesktopContainer )
... does stuff here like return new FormDesktopNode( parent, (FormDesktopContainer) component )
} catch ( NoClassDefFoundError a ) {
System.out.println( a.getMessage() );
}
ここで、出力してからclass oracle.forms.ui.FormDesktopContainer
、NoClassDefFoundを使用したinstanceof呼び出しで例外をスローし、出力します。oracle/forms/ui/FormDesktopContainer
では、どうすればクラスのインスタンスを作成できるのに、それを見つけることができないのでしょうか。