【发布时间】:2019-02-10 20:12:06
【问题描述】:
我想将我的代码编译到 Java 1.0 版。
我设法编译成1.1:
$ java -version
openjdk version "1.8.0_181"
OpenJDK Runtime Environment (build 1.8.0_181-8u181-b13-2~deb9u1-b13)
OpenJDK 64-Bit Server VM (build 25.181-b13, mixed mode)
$ javac -target 1.2 -source 1.2 MyClass.java
(works with some warnings)
$ javac -target 1.1 -source 1.2 MyClass.java
(works with some warnings)
但target 选项似乎不接受1.0:
$ javac -target 1.0 -source 1.2 MyClass.java
javac: invalid target release: 1.0
如何以 JDK 1.0 为目标?
我希望我的 .class 和 .jar 文件可以在尽可能多的系统上运行,包括非常旧的系统,包括 JDK 1.0。 (我无法访问运行 JDK 1.0 的系统。)
到目前为止我已经尝试过:
- 用
ecj-3.0.2.jar编译:不支持-target 1.0,最低为-target 1.1。 - 使用 JDK 1.0 编译:我无法运行它,它不是针对 Linux 发布的。
- 使用 JDK 1.1 编译:我无法运行它,它不是针对 Linux 发布的。
- 使用 JDK 1.2 编译:Linux i386 javac 二进制文件不起作用,它给我分段错误。
- 使用 JDK 1.3 编译:
javac: invalid target release: 1.0。 - 使用 JDK 1.4 编译:
javac: invalid target release: 1.0。 - 使用 JDK 1.5 编译:
javac: invalid target release: 1.0。这是第一个带有 Linux amd64 二进制文件的 JDK。 - 使用 JDK 1.6 编译:
javac: invalid target release: 1.0。 - 使用 JDK 1.7 编译:
javac: invalid target release: 1.0。 - 使用 JDK 1.8 编译:
javac: invalid target release: 1.0。 (当我问这个问题时,我首先得到了这个错误。)
我相信-target 1.0 可能会起作用的原因是这个答案:https://stackoverflow.com/a/26148408
【问题讨论】:
-
这可能是 X-Y 问题 (xyproblem.info)。这里真正的问题似乎是您希望与尽可能多的运行环境兼容。关键在于“运行环境”这个短语。您极不可能找到许多(如果有的话)当前已修补和维护但仍在运行 Java 1.0 的系统。
-
@Jason:不过,在这个问题上,我有兴趣为 JDK 1.0 编译。我已经知道以 JDK 1.1 为目标要容易得多,而且如果我为 JDK 1.1 编译,我的程序可能不会支持很少运行的 JDK 1.0 系统。
-
我有一个 Java 版本 1.0.2,即使在今天搜索安装程序 (JDK-1_0_2-win32-x86.exe) 仍然可以找到下载位置。然而,这是一个仅限 Windows 的安装程序 - 可能出现的其他版本适用于 Solaris 和 MacOS 7.5。没有可用的 Linux 版本