【问题标题】:How to check which JRuby version is compatible with which Java version?如何检查哪个 JRuby 版本与哪个 Java 版本兼容?
【发布时间】:2021-02-06 08:07:32
【问题描述】:

在 JRuby 发行说明中,我经常发现特定版本的 JRuby 与哪个版本的 Ruby 兼容。它与哪个版本的 Java 运行时兼容呢?

例如,http://jruby.org/2016/05/27/jruby-9-1-2-0 页面提到它与 Ruby 2.x 兼容,但没有说明 Java 运行时版本。

【问题讨论】:

    标签: version jruby


    【解决方案1】:

    它不在发行说明中,因为它在不同的版本之间没有变化(除非指定),应该在下载附近,但不是。目前,您可以在项目README中找到

    JRuby 的每个主要版本都支持在其发布时所支持的 JVM,以后的版本通常会修复对较新 Java 版本的支持,但不会放弃对旧版本的支持......因此:

    JRuby 1.7.x 支持 Java 6 或更高版本(7、8,可能支持 9)

    JRuby 9.0/1 支持 Java 7 或更高版本(8,将支持 Java 9)

    JRuby 9.2/3 仅支持 Java 8 或更高版本

    【讨论】:

      【解决方案2】:

      看起来 jruby-1.7.27 在 openjdk 15 下对我来说是“工作”,但有一个变化:

      平台类 (core/src/main/java/org/jruby/ext/ffi/Platform.java) 正在检测基于 1.x 版本字符串的版本,即 java 1.5、1.6、1.7 等。对于 Java 5、6、7。

      openjdk 使用:15.0.2(作为 java 15 的示例)作为版本字符串。

          protected Platform(OS_TYPE os) {
          ... (to line 231)
          int version = 5;
          try {
              String versionString = System.getProperty("java.version");
              if (versionString != null) {
                  String[] v = versionString.split("\\.");
                  
                  //we are looking for the major version here
                  //Oracle uses: 1.8.0_101 which has the major version in the second position
                  //openjdk uses: 15.0.2
                  version = Integer.valueOf(v[0]);
                  if(version == 1) {
                      version = Integer.valueOf(v[1]);
                  }
              }
          } catch (Exception ex) {
              version = 0;
          }
          javaVersionMajor = version;
      }
      

      【讨论】:

        猜你喜欢
        • 2021-02-25
        • 2017-04-29
        • 2016-07-08
        • 2021-08-13
        • 1970-01-01
        • 1970-01-01
        • 2023-01-05
        • 2012-02-23
        • 2023-03-29
        相关资源
        最近更新 更多