変更したクラスファイルを Java クラスパスに動的に追加するにはどうすればよいですか?

DDD
リリース: 2024-11-01 15:53:14
オリジナル
343 人が閲覧しました

How Can I Dynamically Add a Modified Class File to the Java Classpath?

変更されたファイルによる Java クラスパスの動的拡張

Java では、クラスパスは実行時にアプリケーションがアクセスできるディレクトリと JAR ファイルを定義します。クラスパス内のクラスを変更することは、動的な読み込みとコードの更新に不可欠な場合があります。この質問では、既存のクラス ファイルの変更されたコピーを実行時にクラスパスに追加する可能性について説明します。

解決策:

Java クラス ローダーではディレクトリを追加できます。またはJARファイル。ただし、個々のクラス ファイルを直接追加することはサポートされていません。この制限を回避するには、変更したクラス ファイルをサブディレクトリに配置し、そのディレクトリをクラスパスに追加します。

実装:

提供されている Java コード スニペットは、リフレクションを使用してファイルを SystemClassLoader に追加する代替アプローチ:

<code class="java">import java.io.File;
import java.net.URL;
import java.lang.reflect.Method;

public class ClassPathHacker {

    public static void addFile(File f) {
        try {
            addURL(f.toURL());
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public static void addURL(URL u) {
        URLClassLoader sysloader = (URLClassLoader) ClassLoader.getSystemClassLoader();
        Class sysclass = URLClassLoader.class;

        try {
            Method method = sysclass.getDeclaredMethod("addURL", URL.class);
            method.setAccessible(true);
            method.invoke(sysloader, u);
        } catch (Throwable t) {
            t.printStackTrace();
        }
    }
}</code>
ログイン後にコピー

このコードは、SystemClassLoader の保護されたメソッド addURL を反映して、変更されたクラス ファイルをクラスパスに動的に追加します。ただし、SecurityManager が存在する場合、このアプローチは失敗する可能性があることに注意してください。

以上が変更したクラスファイルを Java クラスパスに動的に追加するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!