[英]Java - Can I use JarURLConnection to execute jar classes?
我在支持“ jar://” uri方案的环境中运行,并且我想使用JarURLConnection调用该jar中的任何函数。 例:
jar:file:/home/duke/duke.jar!/COM/foo/Main.class
甲骨文文档说:
JarURLConnection实例只能用于读取JAR文件。 使用此类无法获得OutputStream来修改或写入基础JAR文件。
我的问题是:我可以单独使用jar://
方案来运行代码吗? 还是只阅读课程内容?
您不为此直接使用JarURLConnection。 相反,您创建一个URLClassLoader并使用它来获取相关的类:
Path jar = Paths.get("/home/duke/duke.jar");
try {
ClassLoader classLoader = new URLClassLoader(
new URL[] { jar.toUri().toURL() });
Class<?> mainClass = Class.forName("com.foo.Main", true, classLoader);
mainClass.getMethod("main", String[].class).invoke(null, new String[0]);
} catch (ReflectiveOperationException | MalformedURLException e) {
throw new RuntimeException("Could not run " + jar, e);
}
URLClassLoader在内部使用JarURLConnection,但是您无需直接使用它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.