在我的java应用程序中,我将一个jar文件(与Maven shade插件一起打包)读入一个字节流。在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应用程序中?
更新
答案 0 :(得分:2)
最简单的方法是使用URLClassLoader
而不是尝试从字节流开始执行此操作。您始终可以将.jar写入临时文件并创建一个URL。
代码看起来像:
URLClassLoader loader = new URLClassLoader(
new URL[] {new URL("file://...")},
Thread.currentThread().getContextClassLoader());
loader.loadClass("com.mycompany.TheEntryPoint");
您还可以使用JarURLConnection
自动检测主类名称(或调用它)。 (Oracle也有a tutorial on using this class。)