如何检查运行的java进程的java版本

时间:2016-01-04 12:20:04

标签: spring-boot jvm

我创建了一个使用spring boot并在远程服务器中部署的Web项目,它的默认JDK是

 echo $JAVA_HOME
/usr/local/jdk1.7.0_72

因为我在项目中使用了java 8,所以在开始我的项目之前,我明确地执行了命令

 export JAVA_HOME="/usr/local/jdk1.8.0_65"

然后启动我的项目

./myapp.jar

但当我执行命令

java -version
java version "1.7.0_72"
Java(TM) SE Runtime Environment (build 1.7.0_72-b14)
Java HotSpot(TM) 64-Bit Server VM (build 24.72-b04, mixed mode)

我有点困惑,我不确定我的项目实际使用的是哪个jdk版本? 那就是有一个java进程

jps -l
17429 /var/myapp.jar

我如何知道它使用的是哪个java版本?

谢谢@ frant.hartm

# ps aux | grep 17429
root     17429  0.4  6.7 5995260 1104984 pts/13 Sl  19:16   0:29 /usr/local/jdk1.8.0_65/bin/java -Dsun.misc.URLClassPath.disableJarChecking=true -Dserver.port=8081 -jar /var/myapp.jar

# jcmd 17429 VM.version
17429:
Java HotSpot(TM) 64-Bit Server VM version 25.65-b01
JDK 8.0_65

2 个答案:

答案 0 :(得分:2)

使用jcmd:

jcmd process_id VM.version

$ jcmd 9619 VM.version
9619:
Java HotSpot(TM) 64-Bit Server VM version 24.80-b11
JDK 7.0_80

或者,您可以使用ps找出使用的是哪个java二进制文件:

ps aux | grep 9619
user  9619  0.0  0.5 4031224 82480 ?       Sl   12:31   0:01 /usr/lib/jvm/java-7-oracle/bin/java -cp /usr/lib/jvm

答案 1 :(得分:0)

如果执行which java,它将为您提供操作系统默认使用的java二进制文件。

如果您想使用Java 8运行应用程序并保持默认位置不变,只需运行:

/usr/local/jdk1.8.0_65/bin/java ./myapp.jar