动态加载jar

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

  ...  ...  org.apache.maven.plugins maven-jar-plugin    com.mycompany.TheEntryPoint       

如何动态地将这样的类加载到我的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也有关于使用这个类的教程 。)