問題タブ [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.

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

java - 実行時に .jar をロードする: ローダーは動作するが、setContextClassLoader を使用すると動作しない?

「MyClassLoader」という名前の URLClassLoader にいくつかの jar を設定しています。私が試したら

できます。

私が試したら

それも機能します。

でもやってみたら

をスローしClassNotFoundExceptionます。

もちろん、Class.forNameこれは単なる例です。使用しようとするとMyClass、同様に例外がスローされます。

これはおそらく、私がどのように機能するのか理解していないことを意味しますsetContextClassLoader。誰かが私にこれを明確にし、それを理解するのを手伝ってくれませんか?私のコードを機能させるにはどうすればよいですか? ありがとうございました。

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

java - どのクラスパスエントリがクラスを提供したかを見つけるにはどうすればよいですか?

Javaのカスタムクラスローダーからいくつかの異なる.jarからいくつかの異なるクラスをロードしています。カスタムを作成しURLClassLoader、それにいくつかの.jarを追加し、それをに渡して、必要なServiceLoaderクラスを見つけます。

私の質問は次のとおりです。クラスが与えられた場合、それがロードされた.jarを見つける方法はありますか?

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

java - Java ClassLoader を使用してクラスパスからファイルをロードするにはどうすればよいですか?

ClassLoader を使用して、Properties クラスのプロパティ ファイルをロードしたいと考えています。この説明のために、エラー処理を削除するために以下のコードを簡略化しました。

このクラスと同じディレクトリに「theta.properties」というファイルがありますが、InputStream は常に null です。ファイルを間違った場所に置いていますか? 私はEclipseとそのセットを使用してクラスファイルをソースフォルダーにビルドしています-それは問題ではありません。

ClassLoader に、どのクラスパスが検索されているかを教えてもらうための JavaDoc が見つかりません。

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

classloader - timerTask 接続プールからクラスローダーを消去する

私はいくつかのタイマータスク、接続プールを備えたアプリケーションを持っています。クラスローダーも開発していますが、クラスローダーをクリーンアップする必要がある場合もあります。問題は、タイマー タスクがクラスを参照するデーモンのようなものであることです。timertask からタイマーをキャンセルする方法と、.remove() を呼び出さずに一般的な解決策を使用して接続プールを閉じる方法を教えてください。ありがとう

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

java - ClassLoaderを使用したファイルのロード

この問題はしばらくの間私を悩ませてきました。Javaアプリにいくつかのファイルをロードする必要がありますが、これまでに作業を開始した唯一の方法は次のようになります。

しかし、これは醜くてひどいです。しばらくの間、私はこれが機能していると思っていました:

しかし、それは何らかの理由で機能しなくなりました(私は何かを変更したに違いなく、気づかなかったに違いありません。nullを返します。

getSystemResource()の代わりにgetResource()を使用する必要があります(使用している場合、getSystemResource()は静的ですがgetResource()ではないのはなぜですか?)

私はEclipseを使用していますが、ビルドパス(クラスパス)にフォルダーを含めてみましたが、含めないようにしましたが、違いはないようです。

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

java - クラスローダーが静的変数をロードする方法の説明

さて、これはJavaに関する初心者の質問ですが、頭を悩ませているようには見えません。

クラス内に次のコードがあります

このコードは、次の行のnullpointerexceptionが原因で初期化例外を発生させています

その時点で、変数LIST_INTEGERはnullのようです。

誰かが理由を説明できますか?クラスローダープロセスは線形ですか?つまり、他のすべての変数を完全にロードする前にメソッドを呼び出しますか?

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

deployment - 同じ EJB およびクラスの複数のバージョンを同じ JBoss サーバーにデプロイする

同じ JBoss サーバーにデプロイしたい複数の EJB を持ついくつかの個別のアプリケーション プロジェクト (EAR) があります。現在、一部のプロジェクトは、同じ EJB を使用している場合がありますが、バージョンは異なります。同様の状況で、一部のプロジェクトは、同じ「通常の」クラス (つまり、JNDI ルックアップなしで VM 内にロードされたクラス) の異なるバージョンを使用する場合があります。

OC4J では、これは問題ではなかったようですが、JBoss では、すべてが同じ「名前空間」(またはおそらくクラス ローダー) に存在するという印象を受けます。私はこの仮定で正しいですか?

基本的に、私がやりたいこと (または確実にしたいこと) は次の 2 つです。

  • EJB の JNDI ルックアップを実行するクライアントから、EJB の正しいバージョンが返されるように、EJB が存在するアプリケーションを示すことができるようにしたいと考えています。

  • EJB 内からクラスをインスタンス化するとき、そのクラスが、EJB と同じアプリケーション (EAR) でデプロイされたものであることを確認したいと考えています。

EJB の「分離」プロパティを構成できると読んだと思いますが、2 番目のポイントを解決できる可能性があると思いますか?

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

java - マルチスレッドのクラスローディングは可能ですか?

Java でマルチスレッド クラス ローダーを実装することは可能ですか? メタ駆動型のフレームワークでは、事前に数百のクラスをロードする必要があります。つまり、システム クラスローダーほど遅延はありません。これを加速するために、現在のマルチコアCPUをもっと有効に活用したいと考えています。私がそれに飛び込む前に、誰かがこの問題についてすでに経験を積んでいるか、またはdefineClass()この場合のボトルネックであることが完全に明らかであるかどうかに興味があります.

ありがとうアンドレ

0 投票する
4 に答える
4941 参照

hibernate - JBoss 限定クラスのロード

サーバー上のjarをアップグレードせずに、耳の中で最新の休止状態バージョンを使用したいです。http://jaitechwriteups.blogspot.com/2008/08/how-to-upgrade-hibernate-in-jboss.htmlの指示に従っています。

ただし、現在の問題は、アプリケーションが deploy フォルダーにある jboss-local-jdbc.rar を取得していないことです。

何か案が ?

0 投票する
4 に答える
2783 参照

java - Javaを使用して実行時にクラスバージョンを切り替えることは可能ですか?

いくつかのベンダーAPIの上に構築されるJavaプロジェクトを作成したいと思います。APIは、上記のベンダーのソフトウェアを実行しているサーバーに接続し、さまざまなアクションを実行します。

2つの異なるAPIバージョンでサポートされている2つの異なるバージョンのサーバーがあります。APIへの変更は、内部実装のみにあります。IE古いバージョンで使用できるクラス、インターフェイス、メソッドなどは、新しいバージョンに存在します。したがって、私が作成するコードは、どちらのAPIバージョンでもコンパイルおよび実行する必要があります。APIを使用して接続するときにサーバーに提示されるAPIにはバージョン番号があり、その特定のサーバーで異なるバージョンのAPIを使用することはできません。

  1. 実行時にJARファイルをオンザフライで切り替える方法はありますか?(ac / c ++ DLLのようなもの??)

  2. 実行時にAPIバージョンを切り替えることができない場合、問題を処理するための最も洗練された方法は何ですか。コードを2x(APIバージョンごとに1つ)ビルドしますか?

何かが足りないことを願っていますが、アプローチ2は理想的ではないようです。理由のより具体的な例を次に示します。

これが私のジレンマです。w1を古いAPIでビルドし、w2を新しいAPIでビルドして、適切なサーバーに接続できるようにします。それらが上にあるAPIを除いて、それらは同じです(同一のコード)。コードが同一であっても、単に異なるAPIバージョンに対応するために、W1とW2の2つの一意の名前のクラスタイプを作成する必要がありますか?やりとりしたいAPIバージョンがたくさんあると、手に負えなくなる可能性があります。

どんな提案やコメントも大歓迎です。

-新しい男