実行時に Java クラスパス内のファイルを変更する
Java では、通常、プログラムの実行中に個々のファイルをクラスパスに追加することはできません。が走っています。これは、通常、クラスパスは Java 仮想マシン (JVM) の起動時に設定され、実行中は固定されたままであるためです。
ただし、すでにクラスパスに含まれているファイルがあり、クラスパスを作成する必要がある場合は、変更した場合、回避策が存在する可能性があります。ファイルの変更されたコピーを作成し、クラス ローダーがアクセスできるフォルダー構造に配置できます。
これを行うには、次の手順を使用できます。
<code class="java">import java.io.File; import java.net.URL; import java.net.URLClassLoader; import java.lang.reflect.Method; class ClassPathHacker { public static void addFile(String filePath) { File file = new File(filePath); addFile(file); } public static void addFile(File file) { addURL(file.toURI().toURL()); } public static void addURL(URL url) { URLClassLoader sysloader = (URLClassLoader) ClassLoader.getSystemClassLoader(); Class sysclass = URLClassLoader.class; try { Method method = sysclass.getDeclaredMethod("addURL", parameters); method.setAccessible(true); method.invoke(sysloader, new Object[]{url}); } catch (Throwable t) { t.printStackTrace(); throw new IOException("Error, could not add URL to system classloader"); } } }</code>
これにより、クラスパス内の元のファイルを変更したバージョンで効果的に置き換えることができます。ただし、このソリューションにはリフレクションが含まれており、SecurityManager が存在する場合には機能しない可能性があることに注意することが重要です。さらに、実行時にクラスパスを変更すると、使用している特定のアプリケーションやフレームワークに応じてさまざまな影響が生じる可能性があります。したがって、潜在的な結果を慎重に検討し、必要な場合にのみこの回避策を使用することが重要です。
以上が実行時に Java クラスパス内のファイルを変更できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。