【问题标题】:How can I build a jar for a previous Java version?如何为以前的 Java 版本构建 jar?
【发布时间】:2010-12-08 23:06:30
【问题描述】:

我正在尝试编译我的代码并在不同的服务器上运行它。问题是我的 JRE 版本是 Java 版本“1.6.0_13”,而服务器上的 JRE 版本是 Java 版本“1.4.2”。

当我尝试在服务器上运行 jar 时,这给了我“无法识别的类文件版本”异常。由于必须设置各种依赖项,我无法在服务器上编译我的代码。

所以我需要知道是否有一种方法可以“使用 Eclipse”[这比命令行更容易,因为它处理依赖关系] 并使用 1.4.2 而不是 1.6.0_13 编译我的东西。我是否必须从我的机器上卸载我的 JRE,然后重新安装以前的版本,然后编译,还是有一种优雅和干净的方式?

【问题讨论】:

  • 我建议你将 Java 6 update 13 升级到 Java 6 update 23,因为之前的版本已经很老了,并且已经修复了很多错误。这对于 Java 1.4.2 来说是 10 倍

标签: java eclipse javac


【解决方案1】:

您应该在您的机器上安装 1.4.2 和 1.6,并将该 eclipse 项目配置为使用 1.4.2 JDK。其他项目可能配置为使用 1.6。

从技术上讲,您可以编译为与 JDK 1.6 兼容的 1.4.2,但您可能会遇到库问题,因此通常不值得这样做。

【讨论】:

  • 嘿.. thnx。我下载了 j2sdk-1_4_2_19-linux-i586.bin 。你能告诉我如何配置 eclipse 以将它用于我的包。在 Eclipse 中,我有 buildpath=>j2sdk1.4.bin 和 jdk1.6.0 [如果我把它拿出来..我得到一堆编译错误] ...而在 eclipse buildpath=>orderandexport 中,我检查了 j2sdk 和未检查的 jdk1 .6.0 ........我试过这个,但我认为它没有拿起它..
  • 我不怎么用eclipse,但是这里有一些说明:java-forums.org/eclipse/4278-how-change-jdk.html
【解决方案2】:

您可以使用参数为 java 1.5 编译

javac -source 1.5 -target 1.5 -bootclasspath "C:\Program Files (x86)\Java\jre1.5.0_21\lib\rt.jar"

不要忘记 bootclasspath,否则你会遇到像 String.isEmpty() 这样在 java 1.5 中不存在的函数的问题。

【讨论】:

    【解决方案3】:

    日食火星 (4.5.1)


    更改 JDK 合规性

    Window > Preferences > Java > 编译器 > JDK 合规性 > 更改 编译器合规级别:

    如果您想更改其他详细信息,可以取消选中“使用默认合规设置”。

    OK并在“Compiler Settings Changed”窗口中选择:

    • ,如果您想从工作区构建所有项目:

    • 如果您以后只想构建一个/一些项目

      • 选择项目(单击左侧 - 例如:在包资源管理器中)> 项目 > 构建项目

    导出罐子

    右键单击项目(从左侧 - 例如:在包资源管理器中)> 导出... > 输入“jar”以过滤您的选项有 > 选择你想要的(可能是 JAR 文件可运行的 JAR 文件) > 下一步 > 添加详细信息 > 完成

    【讨论】:

    • 能否也提供一个maven pom.xml示例?
    【解决方案4】:

    您可以在 Eclipse 中配置 Source 和 Target Java 版本。

    您还可以在命令行中使用 -source 和 -target 参数为某个(较旧的)Java 版本进行编译:

    javac -source 1.4 -target 1.4
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-11
      • 1970-01-01
      • 2011-05-25
      • 1970-01-01
      • 2019-06-11
      • 2020-11-12
      相关资源
      最近更新 更多