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

Chr*_*ris 19 java

目标:检查机器上的java版本(我可以从中获取java -version).将它与java网站上的最新版本进行比较

我想知道是否有任何方法可以检查最新的Java版本,假设我在一台机器上安装了JRE/JDK.

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

我查看了javatester.org,但我不希望它通过applet而是通过命令行(我可以添加到脚本中).

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

Mar*_*tör 18

答案其实很简单.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
}
Run Code Online (Sandbox Code Playgroud)

更新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是其他一些答案中提到的另一个热点.


Sar*_*tha 9

更新:我不推荐这种方法,因为这个JRE是具有Ask.com工具栏的JRE.你最好自己下载并自己发布.

jusched.exe程序访问以下URL以找出可用的版本.我认为它不太可能改变,因为jusched安装在数百万台计算机上.

https://javadl-esd-secure.oracle.com/update/1.7.0/map-m-1.7.0.xml

以下是它为我返回的内容片段:

<?xml version="1.0" encoding="ISO-8859-1" standalone="yes" ?>

<java-update-map version="1.0">
      <mapping>
      <version>1.7.0_17</version>
      <url>https://javadl-esd-secure.oracle.com/update/1.7.0/au-descriptor-1.7.0_25-b17.xml</url>
   </mapping>
   <mapping>
      <version>1.7.0_21</version>
      <url>https://javadl-esd-secure.oracle.com/update/1.7.0/au-descriptor-1.7.0_25-b17.xml</url>
   </mapping>
   </java-update-map>
Run Code Online (Sandbox Code Playgroud)

要获取它指向的实际版本,您必须获取上述URL.这是此XML的另一个片段:

xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!-- XML file to be staged anywhere, and pointed to by map.xml file -->
<java-update>
  <information version="1.0" xml:lang="en">
    <caption>Java Update - Update Available</caption>
    <title>Java Update Available</title>
    <description>Java 7 Update 25 is ready to install. Installing Java 7 Update 25 might uninstall the latest Java 6 from your system. Click the Install button to update Java now.  If you wish to update Java later, click the Later button.</description>
    <moreinfo>http://java.com/moreinfolink</moreinfo>
    <AlertTitle>Java Update Available</AlertTitle>
    <AlertText>A new version of Java is ready to be installed.</AlertText>
    <moreinfotxt>More information...</moreinfotxt>
    <url>http://javadl.sun.com/webapps/download/GetFile/1.7.0_25-b17/windows-i586/jre-7u25-windows-i586-iftw.exe</url>
    <version>1.7.0_25-b17</version>
    <post-status>https://nometrics.java.com</post-status>
    <cntry-lookup>http://rps-svcs.sun.com/services/countrylookup</cntry-lookup>
    <predownload></predownload>
    <options>/installmethod=jau FAMILYUPGRADE=1 SPWEB=http://javadl-esd.sun.com/update/1.7.0/sp-1.7.0_25-b17</options>
    <urlinfo>24595ec7f861bc67e572f1e4ad3992441335e1a7</urlinfo>
  </information>
</java-update>
Run Code Online (Sandbox Code Playgroud)

版本标记包含完整版本号.

  • https://javadl-esd-secure.oracle.com/update/1.8.0/map-m-1.8.0.xml - 适用于Java 8.虽然看起来非常关注Windows ... (3认同)

Juc*_*Lam 8

一个非常类似于现在已经不存在的"JreCurrentVersion2.txt"的URL:

http://javadl-esd-secure.oracle.com/update/baseline.version

链接的内容如下所示:

1.8.0_111
1.7.0_121
1.6.0_131
1.5.0_99
1.4.2_43
Run Code Online (Sandbox Code Playgroud)

您可以轻松解析内容以查找最新的JRE版本.