【小技】libフォルダのjarのクラスパスを自動的に追加
Javaで開発していて動的にClassPathを追加したくなったのでメモ。
日本語で検索するとリフレクションを使ったものばかり出てくるので、リフレクションを使わないで(普通に)libフォルダのjarファイルを登録するサンプルです。
public static void main(String[] args) { File libDirectory = new File("lib"); File[] libs = libDirectory.listFiles(new FileFilter() { @Override public boolean accept(File f) { // jarファイルのみ return f.getName().endsWith(".jar"); } }); addClassPath(libs); } private static void addClassPath(File[] files) { if (files == null || files.length <= 0) return; ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); // URLに変換 URL[] urls = new URL[files.length]; for (int i = 0; i < urls.length; i++) { try { urls[i] = files[i].toURI().toURL(); } catch (MalformedURLException e) { // 適宜例外処理 throw new IllegalArgumentException(e); } } URLClassLoader newClassLoader = URLClassLoader.newInstance(urls, classLoader); Thread.currentThread().setContextClassLoader(newClassLoader); }
参考は下記ページです。