1

アプレットにローカル jar を使用させることは可能ですか?

私のアプレット アプリケーションには、いくつかの依存関係 (66Mb 相当の jar) が必要です。ユーザーは事前に jar をインストールできますが、アプレットからどのように使用できますか?

それらをデフォルトの場所 c:/myApp および /usr/local/myApp に保存できます

私はそれらをロードしようとしました:

ClassLoader loader = URLClassLoader.newInstance(
                    new URL[]{new URL("file://" + path + "/xuggle-xuggler-5.2.jar")},
                    JNLP2Manager.getCurrentManager().getAppletClassLoader()
            );

            Thread.currentThread().setContextClassLoader(loader);

しかし、jar はクラスパスに自動的に追加されません。つまり、各クラスを個別にロードする必要があります。

次の作業を行う:

 Class cls = loader.loadClass("com.xuggle.xuggler.video.ConverterFactory");
            String testString = ConverterFactory.XUGGLER_ARGB_32;

しかし、すべてのクラスをアプレット ローダーに追加できますか?

PS私は Applet を使用すべきではないことを知っていますが、それでも私の種類のアプリケーションには Applet が最適です。

4

1 に答える 1

2

いいえ、少なくとも署名されていないアプレットの場合、直接は不可能です。アプレットのクラスパスは、通常アプレットのダウンロード元であるコードベースに対して相対的に定義されます。

考えられる回避策は次のとおりです

  1. UrlClassLoader署名付きアプレットの場合、ローカル jar からクラスを読み取るカスタム クラス ローダー (を使用) を使用できます。
  2. 署名されていないアプレットの場合、ローカル jar をサーバーにアップロードして、そこから使用できます。それほど悪くはないと思います。ユーザーの観点からすると、彼はアプリケーションがカスタム jar の場所を見つけるのを「助ける」だけです。実際に起こることは、jar がサーバーにアップロードされ、アプレットがそこからそれを読み取ることです。この方法は、 type の input タグを持つ通常の HTML フォームを使用して実装できますfile。AJAX を使用すると、多くの詳細をユーザーから隠すことができます。
于 2012-03-20T15:41:01.733 に答える