IBM Developer is your one-stop location for getting hands-on training and learning in-demand skills on relevant technologies such as generative AI, data science, AI, and open source.
jar:<url>!/{entry} import java.net.MalformedURLException; import java.net.URL; import java.net.URLClassLoader; class URLClassLoaderSample { public static void main(String[] args) { try { URL[] urls = new URL[1]; urls[0] = new URL("jar:file://home/hoge/jdbc.jar!/"); ClassLoader parent = ClassLoader.getSystemClassLoader(); URLClassLoader urlClazzloader = new URLClassLoader(urls, parent); Class clazz
Jarファイル用のクラスローダを作りました。 例のDBを縦に表示するヤツの中で使っています。 あれはJDBCのパスを実行時に設定できます。 つまり、クラスパスを設定していないところからクラスを読み込んでます。 通常はこんな感じで接続しますよね。 Class.forName(driverName); Connection conn = Connection.getConnection(url, user, password); 独自クラスローダを使う場合は以下のようになります。 String[] jarnames = ... // 複数のJarファイルが設定可能 JarClassLoader jarClassLoader = new JarClassLoader(); jarClassLoader.setJarFilenames(jarnames); Class driverClass =
Java仮想マシンの配下では、多くのクラスが複雑に(かつ密接に)絡み合い、Javaアプリケーションの動作を支えています。しかし、複数のアプリケーションを利用しているうちに、相互のアプリケーション間で、同名でバージョンだけが異なるクラス(ライブラリ)が必要になったとしたらどうなるでしょう? しかも、そのクラスライブラリには、バージョン間の上位/下位互換性がないとしたら、どうしたらよいでしょうか。 このように、バージョンアップしなければアプリケーションBが動かない、バージョンアップすればアプリケーションAが正常に動かなくなってしまうというケースは、多くのアプリケーションが並存するサーバ上においては、大いにあり得ることです。 そこで、Tomcatのようなコンテナでは、複数のクラスローダに階層関係を持たせることで、個々のクラス(ライブラリ)の独立性を保証しています。クラスローダとは、その名のとおり
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く