在 Python 中验证 Java 版本
Posted
技术标签:
【中文标题】在 Python 中验证 Java 版本【英文标题】:Verifying Java version in Python 【发布时间】: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 版本彼此等效,我就不会问这个问题了哈哈。 【参考方案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 包装器检查该输出。以上是关于在 Python 中验证 Java 版本的主要内容,如果未能解决你的问题,请参考以下文章