2015-09-08 49 views
1

我正在研究一個需要在運行時加載類的項目,所以我做了一些研究並發現需要使用自定義類加載器。我實現了自己的自定義UrlClassloader併爲它提供了我的jar文件的url,它工作正常並且加載了類文件。我已經閱讀了URLClassLoader的java文檔,他們已經明確提到任何以「/」結尾的URL都是指一個目錄,所以如果我在目錄中有多個jar文件,我的類加載器將全部加載他們,我試了一下,但沒有奏效。那麼背後的邏輯是什麼。 請解釋我非常困惑。如果我想要從目錄運行時加載多個jar文件?java中的URLClassLoader

+0

您使用的是哪個Java版本? –

+0

@AdelBoutros java 1.7 – Ishada

回答

1

它們添加一個當它以「/」,將參照從目錄中找到加載內容結束。假設你在該文件夾中有一個提取的包。如果您有一個類com.abc.Test,要加載它形成一個文件夾,您需要在您所指的文件夾中的文件com/abc/Test.class

1

你必須遍歷目錄中的文件,並通過一個

List<URL> urls = new ArrayList<>(); 
try(DirectoryStream<Path> directoryStream = Files.newDirectoryStream(Paths.get(BASE_DIRECTORY), "*.jar")) { 
    for (Path path : directoryStream) { 
     urls.add(path.toUri().toURL()); 
    } 
} 

URLClassLoader urlClassLoader = new URLClassLoader(urls.toArray(new URL[urls.size()])); 
相關問題