Java以编程方式检查最新版本


问题内容

目标 :在计算机上检查Java的版本(我可以从中获取java -version)。将其与Java网站上提供的最新版本进行比较

我想知道是否可以通过某种方法检查最新的Java版本,前提是我已在计算机上安装了JRE / JDK。

如果我可以通过Java本身做到这一点,那么我的解决方案将变得与平台无关。我可以使用java.net.URL类向Java网站发送请求并获取HTML,但是响应会是动态的,因为Oracle可以更改其网站和样式,并且从长远来看可能会遇到维护问题。

我看过javatester.org,但是我不希望通过applet而是通过命令行(可以将其添加到脚本中)进行操作。

通过javacpl.exe,我可以安排定期检查,但是我想按需进行检查。


问题答案:

答案实际上很简单。http://java.com/en/download/testjava.jsphttp://java.com/applet/JreCurrentVersion2.txt发出请求。该文件当前包含一个版本号:‘1.7.0_11’…实际上是最新的和最大的版本号。

Java代码示例

try (BufferedReader br = new BufferedReader(new InputStreamReader(new URL(
    "http://java.com/applet/JreCurrentVersion2.txt").openStream()))) {
  String fullVersion = br.readLine();
  String version = fullVersion.split("_")[0];
  String revision = fullVersion.split("_")[1];
  System.out.println("Version " + version + " revision " + revision);
} catch (IOException e) {
  // handle properly
}

更新2014-03-20

尽管Java
8是最近发布的,但

http://java.com/applet/JreCurrentVersion2.txt当前仍返回1.7.0_51。

更新2016-07-13

看来我们需要每隔几个月再来一次……目前,您需要扫描http://java.com/en/download/installed8.jsp以获取JavaScript变量latest8Version。因此,您可以运行curl -s https://java.com/en/download/installed8.jsp | grep latest8Version

更新2018-08-19

如其他答案中所述,http://javadl-esd-
secure.oracle.com/update/baseline.version
是另一个热点。