我的应用程序包含位于主应用程序文件夹中的插件
src
app_package
modules //plug in jars located here
我的问题是我无法获取jar文件因为当主应用程序转换为jar时你无法拥有文件对象。目前我正在尝试使用InputStream获取jar。有没有办法使用输入流来获取位于modules文件夹中的所有jar的URL?
更新
我使用java serviceloader来加载jar文件。首先,我将所有jar文件加载到文件对象中:
File modules = new File("modules");
File[] fileList = providerFiles.listFiles(new FileFilter() {
public boolean accept(File file) {
return file.getPath().toLowerCase().endsWith(".jar");
}
});
下一步是使用以下方式获取网址:
URL[] urls = new URL[fileList.length];
for (int i = 0; i < fileList.length; i++)
urls[i] = fileList[i].toURI().toURL();
ucl = new URLClassLoader(urls);
我的问题是我意识到在访问jar文件时我应该使用getResource()。然而,我所能做的就是
URL url = getClass().getResource(directory);
InputStream inputStream = url.openConnection().getInputStream();
我迷失在如何使用输入流来获取所有罐子的URL。
答案 0 :(得分:0)
它并不完全清楚,但听起来你在jar文件中有jar文件。那是对的吗?如果是这样,这是非常不正统的部署。
如果要列出zip / jar文件中的文件,可以使用ZipInputStream