首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TwelveMonkeys ImageIO在使用OpenJDK8内置到jar后不工作

TwelveMonkeys ImageIO在使用OpenJDK8内置到jar后不工作
EN

Stack Overflow用户
提问于 2020-09-21 06:16:49
回答 2查看 789关注 0票数 0

目前,我正在通过使用这个库:https://haraldk.github.io/TwelveMonkeys/ TwelveMonkeys ImageIO向我的程序添加其他功能。

它在2020.1.1中工作得很好,但是当我将项目构建到jar中时,它就不起作用了。

错误:

代码语言:javascript
复制
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版本:

代码语言:javascript
复制
java -version
openjdk version "1.8.0_252"
OpenJDK Runtime Environment (Zulu 8.46.0.19-CA-win64) (build 1.8.0_252-b14)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-09-24 05:02:11

@haraldK谢谢你的回答。我花了几天时间才弄清楚,但现在已经开始工作了。对我所做的事情作了一点解释:

  1. 转到Maven项目
  2. 将所有依赖项添加到pom.xml
  3. 添加maven-shade-plugin
  4. 使用两台变压器:ServicesResourceTransformerManifestResourceTransformer
票数 1
EN

Stack Overflow用户

发布于 2022-01-18 14:36:30

我也与此斗争了一段时间,在应用了AstroCool建议的解决方案之后,我的JAR文件仍然不会读取SVG文件,尽管POM文件中有batik转换程序和imageio依赖项。

因此,对于其他努力解决这个问题的人,这里有一些解释,说明如何应用maven-阴影插件及其转换器,以及您需要哪些依赖项才能工作。

首先,我使用了过时的依赖项,因为我使用的是IntelliJ的搜索函数,出于某种原因,它只找到了TwelveMonkeys开发的蜡染转换程序和imageio的旧版本。

下面是我目前在项目POM文件中使用的依赖项:

代码语言:javascript
复制
        <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”部分:

代码语言:javascript
复制
            <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)可能是值得的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63987060

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档