0

在我的 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 应用程序中?

更新:

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

1 回答 1

3

最简单的方法是使用 aURLClassLoader而不是尝试从字节流中从头开始执行此操作。您始终可以将 .jar 写入临时文件并为其创建 URL。

代码看起来像:

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

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

您还可以使用自动检测主类名(或调用它)JarURLConnection。(Oracle 也有使用这个类的教程。)

于 2012-11-22T00:28:33.963 回答