我有一个 PowerMac,它在一些 .jar 上给了我错误的版本号。我想让它看起来像是在运行 Java 6。我将如何欺骗该版本?我还要说我正在运行PowerPC 和 Leopard
1 回答
最可能的问题是您有 Java 6 JAR 文件并且您正试图在旧的 Java 安装上运行它们。
我将如何欺骗版本?
你的问题的答案是你不能。运行 Java 6 特定 JAR 文件的方式是使用 Java 6(或更高版本)JRE 或 JDK。
问题是 Java 类文件的格式发生了变化,而您的安装无法应对新的格式。这不是你可以假装不存在的无端改变。Java 6(实际上是 Java 5)支持泛型类型、枚举、注释和其他东西。假设 JAR 包含使用这些新语言特性的代码,那么旧的 JRE 根本不知道如何处理它们。
有两种解决方案:
在所有机器上将您的 Java 安装升级到所需的级别。这是最好的解决方案……如果可以选择的话……因为这意味着您的用户将受益于安全性和错误修复以及性能增强。(并且您的项目进度不会受到支持旧平台的限制。)
编译所有代码以与您仍然必须使用的最旧版本的 Java 兼容。要么在相应的旧 JDK 上编译,要么在更新的 JDK 上使用适当的 -source / -target / -Xbootclasspath 选项编译......如
javac
手册页所述。
第二种解决方案的问题是,如果相关 JAR 文件的源代码使用最近添加的 Java 语言功能或 API,那么为旧平台重新编译将失败。要解决此问题,您将需要重写代码以用古老的东西替换漂亮的现代东西。不是一个好的解决方案,IMO。
另一种可能性是您看到损坏的 JAR 文件。这不太可能发生,但如果您使用的是 applet 或 webstart,并且服务器正在传递错误页面而不是 JAR 文件,则可能会发生这种情况。
第三种可能性是您根本没有正确配置 Mac 的 Java 安装。将 Java 7 设为默认应该允许您在没有类版本问题的情况下运行所有内容。(感谢@paulsm4)请注意,我无法帮助您……因为我不在 Mac 上使用 Java。