从打包在 jar 中的库访问 类

Accessing classes from libraries packaged in a jar

我为应用程序开发了一个插件。这个插件包括几个库

当从应用程序调用插件时,我得到:

java.lang.NoClassDefFoundError: com/sun/media/imageioimpl/plugins/tiff/TIFFImageWriterSpi

我已确认此 class 已与插件 jar 打包在一起,所以我猜我需要在插件 jar 中使用某种 classloader 来访问此 class - 但不确定如何。感谢任何帮助或重定向。

您需要将 com.sun.media:jai_imageio:1.1 依赖项添加到您的 pom.xml 中。你可以找到依赖关系 belwo:

<dependency>
    <groupId>com.sun.media</groupId>
    <artifactId>jai_imageio</artifactId>
    <version>1.1</version>
</dependency>

如果您使用的是简单项目,您需要从 link 下面下载 jai_imageio.jar jar 文件并放入 lib 目录并添加到构建路径:

http://www.java2s.com/Code/Jar/j/Downloadjaiimageiojar.htm

您需要让应用程序知道插件 jar 的位置,以便它可以在 运行 时加载所需的 类。您可以通过在应用程序 jar 的 META-INF/MANIFEST 文件中指定引用插件 jar 的 Class-Path 条目来做到这一点。

Class-Path: plugin-jar-name1 plugin-jar-name2