繁体   English   中英

Java-我可以使用JarURLConnection执行jar类吗?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM