Java の CLASSPATH をプログラム的に変更する
ユビキタス プログラミング言語である Java には、プログラム的に CLASSPATH を変更する柔軟性が備わっています。この機能は、追加のコードを動的にロードしたり、クラスパスの依存関係をその場で解決したりするなど、特定のシナリオでは非常に貴重であることがわかります。
CLASSPATH を動的に変更する理由
1 つの実用的なアプリケーションJava 内で CLASSPATH を変更すると、プロセス全体を再起動せずに、実行中のアプリケーションで使用できるライブラリが拡張されます。これは、動的なコードの読み込みを必要とする REPL やエディターなどの対話型環境で特に役立ちます。
CLASSPATH の変更
Java バージョン 8 以前の場合、カスタム ClassLoader を作成すると、 CLASSPATH を変更するための信頼できるアプローチです。これには、URLClassLoader クラスの拡張と、新しいクラスローダーが目的のアプリケーション コードで使用されるようにすることが含まれます。
Java 9 以降の場合
ただし、Java で CLASSPATH を変更する必要があります。バージョン 9 以降では、Java エージェントでインストルメンテーション API を利用する必要があります。 Launcher-Agent-Class 属性を jar ファイルのマニフェストに組み込むと、埋め込みエージェントを起動できるようになります。
非システム クラスパスの変更
システム クラスパスは、プロセス内のすべてのコードで利用できるコア ライブラリを定義しますが、通常は実現できません。新しいコードをロードするには、代わりに、新しい ClassLoader を作成し、その URL リストを拡張することをお勧めします。
追加メモ
Java 9 では、System.java.lang.ClassLoader はURLClassLoader ではなくなりました。これには、クラスパスではなくモジュールパスに影響を与えるために java.lang.ModuleLayer を使用する必要があります。
提示されたコード例は、CLASSPATH を変更するための実用的なソリューションを提供し、URLClassLoader、リフレクション (古い Java バージョンの場合) の使用を強調しています。 、Java 9 以降のインストルメンテーション API。
以上が質問の形式と記事の重要なポイントを考慮した、いくつかのタイトルのオプションを次に示します。 * **Java のクラスパスを動的に変更するにはどうすればよいですか?** (記事の中心部分に関する直接的で明確な質問)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。