Java版本兼容性问题

时间:2012-03-28 07:31:14

标签: java

我有一个使用java 1.6编写的客户端jar并使用了enum和java的其他新功能,我的应用程序是基于java 1.4构建的。 我想在我的应用程序中使用该客户端jar。

可行吗?

5 个答案:

答案 0 :(得分:2)

通常:不,你不能。

可以使用像Retroweaver这样的库/字节码重写器来重写库兼容1.4。还有Retrotranslator,它做同样的事情和其他工具。我最后一次使用Retroweaver就是在Java 5发布之后,所以我不能谈论它的当前状态。

但这最多只是一次黑客攻击。使用古老的Java版本是最好的责任,你应该尽快升级到至少 Java 5。

答案 1 :(得分:0)

你不能升级到JDK1.6吗?

否则你需要将JDK1.6的rt.jar添加到类路径中,但这会导致JDK1.4和JDK1.6共有的类发生冲突

答案 2 :(得分:0)

您的客户端jar将需要JRE 1.6。至于您的应用程序,理想情况下,您应该能够在JRE 1.6上运行它,因为Java是向后兼容的。

因此,您需要将应用程序移植到JRE 6,重新编译,然后您应该能够使用客户端jar。

但是,升级和移植会带来复杂性和后果。

答案 3 :(得分:0)

您可以尝试通过Web服务界面提供jar,并将其作为1.6运行;应该工作,但我不会告诉你这很容易。

答案 4 :(得分:0)

您显然需要JRE 1.6或更高版本才能运行库代码。由于向后兼容性,应用程序的1.4部分也应该在该JRE上运行。你如何在1.6 lib和1.4应用程序之间进行交互是另一个问题。

您的应用程序无法直接使用枚举或其他1.5功能。如果您在库中直接访问的所有内容都是1.4兼容的,我认为它应该可以正常工作。例如。如果您的应用程序定义了一个接口,那么库提供了一个实现。 (即典型的插件模式。)如果您的库的界面需要应用程序使用1.5功能,例如将枚举值作为方法参数传递,这显然不适用于现有的字节代码。