How to know if I am using Open JDK or Oracle JDK?

2020-06-07 06:26发布

Using java -version gives me this.

java version "1.7.0_80"
Java(TM) SE Runtime Environment (build 1.7.0_80-b15)
Java HotSpot(TM) 64-Bit Server VM (build 24.80-b11, mixed mode)

Is it an OpenJDK or OracleJDK ?

3条回答
叛逆
2楼-- · 2020-06-07 07:13

I think that you're using OracleJDK.

As I saw with a google search, the openJDK --version output is like this:

java -version

openjdk version "1.8.0-internal"

OpenJDK Runtime Environment (build 1.8.0-internal-0)

OpenJDK 64-Bit Zero VM (build 25.0-b20-internal, interpreted mode)

See: http://mail.openjdk.java.net/pipermail/jdk8-dev/2013-July/002840.html

查看更多
冷血范
3楼-- · 2020-06-07 07:19

On debian, jessie-backports, openjdk-8:

openjdk version "1.8.0_66-internal"
OpenJDK Runtime Environment (build 1.8.0_66-internal-b17)
OpenJDK 64-Bit Server VM (build 25.66-b17, mixed mode)

Using the ubuntu ppa for oracle-java-8:

java version "1.8.0_66"
Java(TM) SE Runtime Environment (build 1.8.0_66-b17)
Java HotSpot(TM) 64-Bit Server VM (build 25.66-b17, mixed mode)

I would assume, the string "java" at the beginning denotes Oracle Java, whereas the OpenJDK gets you "openjdk".

查看更多
forever°为你锁心
4楼-- · 2020-06-07 07:27

Call sun.misc.Version#println in java code will dump the version info to stderr. If you want to fetch the JDK version from java code.

package bj.tmp;

import sun.misc.Version;

public class Foo {
    public static void main(String[] args) {
        Version.println();
    }
}

Like this:

java version "1.8.0_192"
Java(TM) SE Runtime Environment (build 1.8.0_192-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.192-b12, mixed mode)
查看更多
登录 后发表回答