問題タブ [urlclassloader]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
1254 参照

java - Tomcat で URLClassLoader が遅い

約 30 個の jar を含むクラスパス ディレクトリがあります。私の単純なコンソール アプリケーションでは、これらすべての jar を指す sURLClassLoaderのリストで初期化する場所を作成しています。URL

このように、すべてが正常に機能しており、 my から単一のクラスをロードするのに数ミリ秒かかりますURLClassLoader

次に、このコード スニペットを取り、Tomcat で実行します。たとえば、サーブレット内の単純な Web リクエストでトリガーされますdoGet()。驚くべきことに、平均的なクラスをロードするのにかかる時間は 10 ~ 15 倍長くなり、初期化時間全体が受け入れられなくなります。この問題は、少なくとも Tomcat バージョン 6 と 7 の両方で発生します。

何か案は?

0 投票する
3 に答える
1647 参照

java - URLClassLoader は注釈を com.sun.$Proxy$27 としてロードします

Java クラスを動的にロードしようとしています。基本的な考え方は、実行時に動的にロードされるモジュールが jar に含まれているということです。これが私のやり方です(ハックであることは知っていますが、既存のクラスローダーにjarを動的に追加する方法は他にありません):

すべてのモジュールには @Module アノテーションが付けられます。したがって、モジュールに関する詳細情報を取得するために、注釈を取得しようとします。問題は、foo の注釈が com.coderunner.Module ではなく com.sun.$Proxy$27 型であるため、

ここで何が起こっているのか、少し混乱していると言わざるを得ません。私がやりたいことは可能ですか?どのように?

編集: spring/spring-mvc および tomcat 環境でこれを試していることにも言及する必要があるかもしれません。

0 投票する
1 に答える
274 参照

java - Java URLClassLoader: インポートするクラスを選択します

現在、この行を使用してサードパーティの JAR をロードし、そのパッケージ/クラスをプログラムに追加しています

このアプローチの問題点は、JAR 全体が読み込まれることです。つまり、すべてのパッケージとすべてのクラスがインポートされます。選択したいくつかのクラスのみをロードするように URLClassLoaded に指示するにはどうすればよいですか?

例は、次のような JAR 階層です。

  • パッケージA
    • クラス1
    • クラス2
  • パッケージB
    • クラス1
    • クラス2
    • クラス3
    • クラス4

「A.* と B.class2 のみをインポート」のようなことをしたい

0 投票する
2 に答える
13141 参照

java - Jar ファイル内のクラスをロードし、そのパスを取得します

ここにはすでに似たような質問がたくさんあることは知っていますが、それらからよりスマートな質問を得ることができませんでした。jar ファイル内にクラスをロードしたいのですが、この時点では問題ありませんが、独自の ClassLoader にパスを渡すと、例外がスローされ、クラスが見つかりません。絶対パスを使用して jar 内にクラスをロードすることは可能ですか? 例えば、
Class cls = loader.loadClass(/path/MyPlugin.jar/MyPlugin.class);

しかし、私がこれを行うとき:

それはfalseを出力します。私はそれが何を意味するのかよくわかりませんが、ウェブで時々見たMyPlugin.jar!/MyPlugin.classorを使ってみました...MyPlugin.jar.jar!MyPlugin.class

これを行うと、クラスが見つかります:

しかし、今、どうすればパスを受け取ることができますか? のようなものURL url = cl.getResource("MyPlugin");(nullを返す)

0 投票する
0 に答える
278 参照

java - jarclassloader/urlclassloader による Java の使用中の jar の保持

.jar ファイルをロードしていますJarClassLoader。jar ファイルがロードされた後、ファイルを削除したいと考えています。ファイルは Java jvm によって使用されているため、ファイルの削除以外はすべて正常に機能します。jar のロックを解除するにはどうすればよいですか? 私はすでにすべてinputstreamsを閉じており、urlclassloader.

ありがとう、リズ

0 投票する
0 に答える
752 参照

scala - akka scala: URLClassLoader により、アクターが isAssignableFrom に失敗しなくなります

外部 jar からアクターを動的にロードし、そのアクターを ActorSystem に起動しようとしています。アクターをロードするためのプラグイン スタイルのアーキテクチャが必要です。これまでのところ、次のコードを試しています。

この部分は問題なく動作しますが、ActorSystem を起動して新しいアクターを起動しようとすると、次のようになります。

次の例外が発生します。

Props.scala ファイルを詳しく調べたところ、 isAssignableFrom が使用されているためにエラーが発生していることがわかりました。少しテストしたところ、次の紛らわしい動作があることがわかりました。

この動作を回避する方法はありますか? システムクラスローダーと URL クラスローダーで定義されている Actor クラスに関係があると思います。私のプラグインの試みは可能ですか?

ああ、私はscala 2.10.2でakka 2.2.1を使用しています

編集

1つの点を明確にするclazz.isInstanceOf[Class[Actor]]ために、 は型消去のために何にでも当てはまります。

0 投票する
0 に答える
245 参照

java - デフォルト以外のパッケージからのクラスのロード

実行時にクラスを動的にロードしようとしたときに、そのクラスがデフォルト パッケージではないパッケージでコンパイルされた場合、ClassNotFound 例外が発生します。

例:パッケージ名:「モデル」。クラス名:「Cup.class」。これは私のコードです:

0 投票する
1 に答える
254 参照

java - java.net.URLClassLoader はクラス アノテーションを追加しません

注釈を使用してプロジェクトの gui コードを自動生成する ant タスクを開発している間、宣言的なアプローチを好むので、 を使用しjava.net.URLClassLoaderてクラスをクラスパスに動的に追加します。
クラス - レベル - アノテーションのクラスをスキャンすると、それらは存在しますが、それらのいずれも見つかりません

たとえば 、他の誰かがこの問題を経験し、解決策を提供できますか? (URLClassLoader をサブクラス化して、loadClass への呼び出しを内部で loadClass(Class clazz, true) として処理するようにしても、どちらも機能しませんでした)

@AutoGenerateGUI
class LoginBean


https://stackoverflow.com/users/1103872/marko-topolnikに感謝 さらに: 動的にロードされたクラスの注釈を取得すると、常に com.sun.proxy.$Proxy[x] が返されるため、元の注釈型に到達する構成体 URLClassLoader が注釈を com.sun.$Proxy$27 としてロードし、プロキシ オブジェクトが実装するインターフェイスを反復処理するという構成を使用する必要がありました。これは必要ではありませんが、実際には instanceof を使用するなどの他のソリューションが失敗しました。