読者です 読者をやめる 読者になる 読者になる

Calms blog

CALMSブログ

【小技】libフォルダのjarのクラスパスを自動的に追加

Java プログラミング

 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);
}

参考は下記ページです。

stackoverflow.com