Sun JDK和open JDK之间的区别

时间:2013-03-06 23:47:07

标签: java jasper-reports openjdk sun

我遇到了以下错误:

  

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

我使用 Sun JDK 构建了我的JAR,并且我在 OpenJDK 上运行。我有点沉迷于这种环境。

有一个简单的方法吗?我是否必须编译 OpenJDK 上运行代码?

2 个答案:

答案 0 :(得分:2)

该名称的

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

答案 1 :(得分:2)

从它的外观来看,Jasper Reports正在向下钻取并使用它不应该使用的内部类/方法。这显然不适用于所有平台......这并不奇怪,因为Sun / Oracle特别声明这样做可能会破坏。

你应该怎么做?

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

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