动态加载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也有关于使用这个类的教程 。)