【问题标题】:difference between Sun JDK and open JDKSun JDK 和 Open JDK 的区别
【发布时间】:2013-03-06 23:47:07
【问题描述】:

我遇到了如下错误:

线程“Thread-1”java.lang.IncompatibleClassChangeError 中的异常: 找到类com.sun.image.codec.jpeg.JPEGImageEncoder,但是接口 预料之中

我已经使用 Sun JDK 构建了我的 JAR,并且我正在 OpenJDK 上运行。我有点被这种环境困住了。

有没有简单的方法解决这个问题?我必须编译OpenJDK上运行代码吗?

【问题讨论】:

  • 您的代码是否直接访问JPEGImageEncoder?这不是公共 API。 (如果你是,你可能想升级到绝对最新的 Oracle 和 Open JDK。然后删除对“私有”类的依赖。)如果你真的运行 Sun JDK,可能是时候更新那个旧东西了。跨度>
  • 我没有直接访问这个功能,这都是在 3rd 方软件 jasper 报告中。

标签: java jasper-reports openjdk sun


【解决方案1】:

com.sun.image.codec.jpeg.JPEGImageEncoder 顾名思义是一个特定于 Sun 的包,因此不能保证(实际上极不可能)任何其他 JDK\JRE 都会提供该类。你是直接用的吗?如果是这样,您将应用程序限制为仅限 Sun 的 JVM。

【讨论】:

    【解决方案2】:

    从表面上看,Jasper Reports 正在深入研究并使用它不应该使用的内部类/方法。这显然不适用于所有平台......这并不奇怪,因为 Sun / Oracle 明确指出这样做可能会破坏。

    你应该怎么做?

    • 检查Supported Platforms datasheet。我注意到它列出了 OpenJDK 6,但没有列出 OpenJDK 7。也许您应该坚持使用 JasperSoft 支持的平台。

    • 我发现 this page 似乎在谈论这个问题......或类似的东西......并提供了解决方法。

    【讨论】:

    • 看起来很有前途,我会试一试,谢谢。我会报告的
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-15
    • 2014-04-16
    • 2015-01-01
    相关资源
    最近更新 更多