問題タブ [classloader]
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.
jar - urlclassloader によってロードされた jar ファイルのサイズを取得します
urlclassloader によって動的にロードされるファイルサイズを見つける良い方法を知っている人はいますか?
次の方法で urlclassloader を使用していますが、使用されている帯域幅を追跡する必要があります。
前もって感謝します!
java - WebSphereのクラスローダーポリシーをibm-web-bnd.xmiファイルで設定できますか?
WAS 6で実行されるJEEアプリケーションがあります。クラスローダーの順序を「アプリケーションクラスローダーで最初にロードされるクラス」に設定し、WARクラスローダーポリシーオプションを「アプリケーションのシングルクラスローダー」に設定する必要があります。
ibm-web-bnd.xmiファイルまたはその他のファイルのいずれかでEARファイル内でこれらのオプションを指定できるので、管理者はこれらの設定を手動で変更する必要はありませんか?
アプリは自動化されたスクリプトを介してデプロイされ、デプロイを担当する人はオフサイトにいるため、またその他の政治的な理由から、これは非常に役立ちます。
java - この無効なクラスローダー階層を回避するにはどうすればよいですか?
iPlanet の Java アプリケーション サーバーを実行していますcommons-logging-1.0.4.jar
。
私のアプリケーションの 1 つが、同じく使用AuthSSLProtocolSocketFactory
する別の apache ライブラリである呼び出しを行うまでは問題ありませんcommons-logging
。
jar を jvm クラスパスに配置すると、次のエラーが発生します。
Invalid class loader hierarchy. You have more than one version of 'org.apache.commons.logging.Log' visible, which is not allowed. (Caused by org.apache.commons.logging.LogConfigurationException: Invalid class loader hierarchy....
それcommons-logger
自体の 2 つのインスタンスを異なるクラスローダーにロードするのは好きではないようです。アプリケーションサーバーには、最初にそれをロードする独自のクラスローダーがあると想定しています(ただし、それについて言及しているアプリケーションサーバー構成は見つかりません)。そのため、アプリケーションが2回目にロードしようとすると、その例外がスローされます。
Web サーバーを変更することも、Apache ライブラリを変更することもできません。提案?
java - 相対ディレクトリをJavaクラスパスに追加し、ClassLoader()。getResourceAsStream( "")を使用する
相対ディレクトリ(つまり、foo / bar / pluginh)をJavaクラスパスに追加して使用することは可能ですか?
foo / bar / plugin / xyzzy.propertiesを取得するには?
私のクラスパスは次のようになります。
また、fooとxyzの両方のjarからクラスとリソースを使用できますが、plughディレクトリからは使用できません。そのような場合、in
は常にnullです。
これを機能させることができず、これがサポートされていないだけなのか、微妙な何かが欠けているのか、何か間違っているのかがわかりません。絶対パスを使用する必要がありますか?
reflection - RCP アプリの検索表示
GUI アプリケーションを開始するテスト フレームワークを作成しています。SWT アプリケーションの場合にこの GUI をテストできるようにするには、それがディスプレイであることを知る必要があります。通常、この表示は別のクラスローダによってロードされるため、swt Display クラスのメソッド findDisplay(Thread t) をリフレクションによって使用して、このタスクを実行しています。私のコードは次のようになります。
私の意見では、これにより、現在のスレッド グループ内のタイプ Display のすべてのオブジェクトが検出されるはずです。ただし、GUI は完全に起動していますが、texteditor RCP の例では何も得られません。
何がうまくいかないのか、またはこれを合理的な方法でデバッグする方法はありますか?
java - Web アプリケーションの起動時に最初に読み込まれるクラスはどれですか?
Web アプリケーションと 2 つのクラス ファイルがあります。
最初のクラスはabc.jarファイル (WEB-INF/lib/abc.jar)内にあるMyClass.classで、2 番目のクラスはクラス フォルダー (WEB-INF/classes/ YourClass.class) 内にある YourClass.class です。
私の質問は、アプリケーションの起動時に最初にロードされるクラスはどれですか? なぜ ?
java - ClassLoaderメソッドを使用して、クラス内のすべてのリソースを入力ストリームとして取得します
私の問題はあなたがかなり一般的だと思う問題ですが、私は今のところ解決策を見つけることができていません。
Tomcat5.5でJavaWebアプリを構築する(ただし、WebLogic環境など、どこにでもデプロイできることが要件であるため、リソースをストリームとしてロードする必要があります)。グッドプラクティスでは、リソースファイルをWEB-INF / classesの下に配置し、ClassLoaderのgetResourceAsStream()メソッドを使用してロードする必要があります。ロードしたいリソースの名前がわかっていれば、すべてうまくいきます。
私の問題は、クラスのサブディレクトリにあるすべてのもの(空でないサブディレクトリを再帰的に含む)をロードする必要があることです。
したがって、たとえば、WEB-INF /classesの下に次のものがある場合:
folderX / folderY
folderX / folderY / fileA.properties
folderX / fileB.properties
アプリケーションを起動する前に実際に名前を知らなくても、fileA.propertiesクラスとfileB.propertiesクラスをロードする必要があります(つまり、WEB-INF / classesの下の任意のディレクトリからリソースを任意にロードする機能が必要です)。
これを行うための最もエレガントな方法は何ですか?必要な情報(必要な各リソースへのリソースパス)を見つけるために、どのオブジェクトに問い合わせることができますか?サーブレット固有ではないソリューションが最適です(可能であれば、すべてをクラスローディングフレームワーク内に保持します)。
前もって感謝します!
python - Pythonでは、生成されたクラスをどのようにアンロードできますか
ファイル (hfd5 - pytables) をオブジェクト構造にロードするライブラリに取り組んでいます。構造体に使用されている実際のクラスは、hdf5 ファイルから文字列として読み込まれ、次の方法で読み込まれます。
問題は、このように複数のクラスをロードすると、ガベージ コレクションの収集不可能な部分、つまり実際のクラス定義にオブジェクトが表示されることです。これをグローバル ディクショナリに読み込むこともできますが、問題は孤立したクラスのままです。クラスをアンロードする方法はありますか?
主な問題はクラスです。mro属性には、クラス自体への参照が含まれているため、ガベージ コレクターが処理できない循環参照が発生します。
以下は、自分で確認するための小さなテスト ケースです。
注意: 以前にクラスを作成するためにファイル内のテキストの解析を使用することに反対したことはすでにありますが、どうやら彼らはここでそれを使用することに設定されており、私が知らないいくつかの利点があるため、このソリューションから離れることは今のところ現実的ではありません.