目前,我正在通过使用这个库:https://haraldk.github.io/TwelveMonkeys/ TwelveMonkeys ImageIO向我的程序添加其他功能。
它在2020.1.1中工作得很好,但是当我将项目构建到jar中时,它就不起作用了。
错误:
Exception in thread "main" javax.imageio.IIOException: Unsupported Image Type
at com.sun.imageio.plugins.jpeg.JPEGImageReader.readInternal(JPEGImageReader.java:1036)
at com.sun.imageio.plugins.jpeg.JPEGImageReader.read(JPEGImageReader.java:1007)
at javax.imageio.ImageIO.read(ImageIO.java:1462)
at javax.imageio.ImageIO.read(ImageIO.java:1309)这个错误告诉我们使用的是内部java,而不是来自TwelveMonkeys。我试图在模块中设置优先级,但这也没有帮助:
Java版本:
java -version
openjdk version "1.8.0_252"
OpenJDK Runtime Environment (Zulu 8.46.0.19-CA-win64) (build 1.8.0_252-b14)发布于 2020-09-24 05:02:11
@haraldK谢谢你的回答。我花了几天时间才弄清楚,但现在已经开始工作了。对我所做的事情作了一点解释:
pom.xmlmaven-shade-pluginServicesResourceTransformer和ManifestResourceTransformer发布于 2022-01-18 14:36:30
我也与此斗争了一段时间,在应用了AstroCool建议的解决方案之后,我的JAR文件仍然不会读取SVG文件,尽管POM文件中有batik转换程序和imageio依赖项。
因此,对于其他努力解决这个问题的人,这里有一些解释,说明如何应用maven-阴影插件及其转换器,以及您需要哪些依赖项才能工作。
首先,我使用了过时的依赖项,因为我使用的是IntelliJ的搜索函数,出于某种原因,它只找到了TwelveMonkeys开发的蜡染转换程序和imageio的旧版本。
下面是我目前在项目POM文件中使用的依赖项:
<dependency>
<groupId>org.apache.xmlgraphics</groupId>
<artifactId>batik-transcoder</artifactId>
<version>1.14</version>
</dependency>
<dependency>
<groupId>com.twelvemonkeys.imageio</groupId>
<artifactId>imageio-batik</artifactId> <!-- svg -->
<version>3.8.1</version>
</dependency>
<dependency>
<groupId>com.twelvemonkeys.imageio</groupId>
<artifactId>imageio-tga</artifactId>
<version>3.8.1</version>
</dependency>注意,通过使用search函数:https://mvnrepository.com/,您总是可以在这里找到它们的最新版本。
要使用maven阴影插件,请将这些应用到POM文件的“plugins”部分:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.2.4</version>
<configuration>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/>
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"/>
</transformers>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
</execution>
</executions>
</plugin>最后,如果您做了许多更改和添加,最好是清理您的项目,在IntelliJ中,您可以通过单击文件->使Chache失效来实现这一点。
之后,单击Build重建项目,然后构建新的JAR文件。如果您仍然遇到问题,那么在重新构建项目之后创建一个新的工件(如果使用intelliJ)可能是值得的。
https://stackoverflow.com/questions/63987060
复制相似问题