【问题标题】:Verifying Java version in Python在 Python 中验证 Java 版本
【发布时间】:2021-10-03 10:42:24
【问题描述】:

我正在开发一个 Python 程序,它充当 Java 程序的包装器。我目前正在尝试验证用户的 Java 版本,以便我可以说它很好,或者用户需要不同版本的 Java。我的问题来自这样一个事实,即有多种 Java,例如,运行 OpenJDK 的人有一个像 11.0.8 这样的版本号模式,而 Java 会有一个像 1.8 这样的版本号模式。我当前的代码可以得到这个数字,但我找不到任何类似“AdoptOpenJDK 2.5 相当于 OpenJDK 11.0.8 相当于 Java 1.8”的内容。如果我能得到类似的东西,那么这个问题可以通过简单的字典查找来解决。

我当前的代码:

java_version = subprocess.check_output(['java', '-version'], stderr=subprocess.STDOUT) # returns bytestring
java_version = java_version.decode("utf-8") # convert to regular string
version_number_pattern = r'\"(\d+\.\d+).*\"' # regex pattern matching
version = re.search(version_number_pattern, java_version).groups()[0]

attained from here

任何帮助将不胜感激,谢谢!

【问题讨论】:

  • "OpenJDK 11.0.8 等同于 Java 1.8" - 不,它们不等同。 11.0.8 将是 Java 11,而 1.8 将是 Java 8。
  • 是的,如果我知道哪些 Java 版本彼此等效,我就不会问这个问题了哈哈。

标签: java python version


【解决方案1】:

最可靠的方法是运行一个小程序来测试您需要的功能。编译 java 1.2 的主类,使其始终可以执行,然后 try-catch-invoke 测试类。

问题是你需要的。如果它只是一个人,请出示字符串并让他们目视检查。如果是验证JVM运行测试代码。

【讨论】:

  • 只需一个简单的打印System.getProperty("java.version") 的程序就可以解决问题。它甚至可以用来传递所需的最低版本。
  • 是的,它将被计算机查看,如果用户的 Java 版本不是我们支持的版本,那么我们会引发错误,告诉他们更改/更新它。不过,我很感激您的帮助,我会研究您的解决方案,我目前的问题是我对 Java 一无所知,所以我将向这样做的人重申您的解决方案,看看他们是否可以帮助我实现它。跨度>
  • 这听起来像是您在运送产品。告诉 Java 人员附上一个您知道可以工作的 JRE,因为您已经对其进行了测试,而不是依赖用户安装可能工作或可能不工作的东西。如果你对 Java 一无所知,为什么要给你这个作业?
  • 哈哈,我非常了解 Python,我们正在“交付”的产品是开源 Java 程序的开源 Python 包装器。所以我所做的大部分工作都可以在 Python 中完成,我们只是想看看我们是否可以为我们的 Python 端构建一个 Java 版本检查,以便更容易捕捉错误,比如如果他们的 Java 不让用户编译程序版本至少不是 Java 8。
  • 在这种情况下,我会亲自运行一个由您的团队编写的小型 java 程序,测试底层的 JVM,然后让 python 包装器检查该输出。
猜你喜欢
  • 2014-04-14
  • 2014-08-08
  • 2017-05-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多