繁体   English   中英

动态加载jar

[英]Load jar dynamically

在我的Java应用程序中,我将jar文件(与Maven阴影插件打包在一起)读入字节流。 jar中有一个在POM.xml定义的入口点类

<build>
  ...
  <plugins>
    ...
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-jar-plugin</artifactId>
      <configuration>
        <archive>
          <manifest>
            <mainClass>com.mycompany.TheEntryPoint</mainClass>
          </manifest>
        </archive>
      </configuration>
    </plugin>
  </plugins>
</build>

如何将此类动态加载到Java应用程序中?

更新:

  • 该jar文件作为字节流加载,并且不驻留在文件系统或URL中

最简单的方法是使用URLClassLoader而不是尝试从字节流重新开始。 您始终可以将.jar写入临时文件,并为此创建URL。

代码如下所示:

URLClassLoader loader = new URLClassLoader(
    new URL[] {new URL("file://...")},
    Thread.currentThread().getContextClassLoader());

loader.loadClass("com.mycompany.TheEntryPoint");

您还可以使用JarURLConnection自动检测(或调用)主类名称。 (Oracle还提供了有关使用此类的教程 。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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