【发布时间】: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]
任何帮助将不胜感激,谢谢!
【问题讨论】:
-
"OpenJDK 11.0.8 等同于 Java 1.8" - 不,它们不等同。 11.0.8 将是 Java 11,而 1.8 将是 Java 8。
-
是的,如果我知道哪些 Java 版本彼此等效,我就不会问这个问题了哈哈。