簡體   English   中英

如何分辨已安裝的Java的差異-JDK或JRE

[英]How to tell the diffarences of installed java - JDK or JRE


當我執行java.exe -version
JDK和JRE都說: SE運行時環境
還有其他方法可以區分JDK或JRE

C:\Program Files\Java\1.6.0_45\bin>java.exe -version
java version "1.6.0_45"
Java(TM) SE Runtime Environment (build 1.6.0_45-b06)
Java HotSpot(TM) 64-Bit Server VM (build 20.45-b01, mixed mode)

足夠簡單...嘗試並:

javac.exec -version

如果收到告訴版本的消息,則說明您擁有JDK。 如果有消息告訴您找不到該命令,則說明您擁有JRE。

如果您查看安裝了jdk / jre的文件夾結構,您會發現在jdk / bin文件夾中有相當多的二進制文件集合,例如java,javac,javap等。JRE將包含Java但不包含javac, javap等。我假設這是linux,並且您下載了壓縮歸檔文件並將其解壓縮。

但這不是唯一的區別,JDK是也包括JRE的開發套件。 如果您對運行Java程序感興趣,那么JRE就足夠了,但是如果有包括編譯在內的開發,那么就需要JDK。 還請參見: JDK和JRE有什么區別?

JDK和JRE之間的bin文件夾結構差異(例如):

對於JRE:

$ ll jre/bin/
total 452K
lrwxrwxrwx. 1 ec2-user ec2-user    8 Nov 18 18:27 ControlPanel -> jcontrol
drwxr-xr-x. 5 ec2-user ec2-user 4.0K Sep 17 20:42 ..
drwxr-xr-x. 2 ec2-user ec2-user 4.0K Sep 17 20:42 .
-rwxr-xr-x. 1 ec2-user ec2-user 7.6K Sep 17 20:42 java
-rwxr-xr-x. 1 ec2-user ec2-user 130K Sep 17 20:42 javaws
-rwxr-xr-x. 1 ec2-user ec2-user 6.2K Sep 17 20:42 jcontrol
-rwxr-xr-x. 1 ec2-user ec2-user 7.8K Sep 17 20:42 jjs
-rwxr-xr-x. 1 ec2-user ec2-user 7.8K Sep 17 20:42 keytool
-rwxr-xr-x. 1 ec2-user ec2-user 8.0K Sep 17 20:42 orbd
-rwxr-xr-x. 1 ec2-user ec2-user 7.8K Sep 17 20:42 pack200
-rwxr-xr-x. 1 ec2-user ec2-user 7.9K Sep 17 20:42 policytool
-rwxr-xr-x. 1 ec2-user ec2-user 7.8K Sep 17 20:42 rmid
-rwxr-xr-x. 1 ec2-user ec2-user 7.8K Sep 17 20:42 rmiregistry
-rwxr-xr-x. 1 ec2-user ec2-user 7.8K Sep 17 20:42 servertool
-rwxr-xr-x. 1 ec2-user ec2-user 8.0K Sep 17 20:42 tnameserv
-rwxr-xr-x. 1 ec2-user ec2-user 224K Sep 17 20:42 unpack200

對於JDK:

$ ll jdk/bin/

total 780K
lrwxrwxrwx. 1 ec2-user ec2-user    8 Nov 18 18:27 ControlPanel -> jcontrol
drwxr-xr-x. 8 ec2-user ec2-user 4.0K Sep 17 20:44 ..
drwxr-xr-x. 2 ec2-user ec2-user 4.0K Sep 17 20:42 .
-rwxr-xr-x. 1 ec2-user ec2-user 7.8K Sep 17 20:42 appletviewer
-rwxr-xr-x. 1 ec2-user ec2-user 7.8K Sep 17 20:42 extcheck
-rwxr-xr-x. 1 ec2-user ec2-user 7.8K Sep 17 20:42 idlj
-rwxr-xr-x. 1 ec2-user ec2-user 7.8K Sep 17 20:42 jar
-rwxr-xr-x. 1 ec2-user ec2-user 7.8K Sep 17 20:42 jarsigner
-rwxr-xr-x. 1 ec2-user ec2-user 7.6K Sep 17 20:42 java
-rwxr-xr-x. 1 ec2-user ec2-user 7.8K Sep 17 20:42 javac
-rwxr-xr-x. 1 ec2-user ec2-user 7.8K Sep 17 20:42 javadoc
-rwxr-xr-x. 1 ec2-user ec2-user 7.8K Sep 17 20:42 javah
-rwxr-xr-x. 1 ec2-user ec2-user 7.8K Sep 17 20:42 javap
-rwxr-xr-x. 1 ec2-user ec2-user 1.8K Sep 17 20:42 java-rmi.cgi
-rwxr-xr-x. 1 ec2-user ec2-user 130K Sep 17 20:42 javaws
-rwxr-xr-x. 1 ec2-user ec2-user 7.8K Sep 17 20:42 jcmd
-rwxr-xr-x. 1 ec2-user ec2-user 7.9K Sep 17 20:42 jconsole
-rwxr-xr-x. 1 ec2-user ec2-user 6.2K Sep 17 20:42 jcontrol
-rwxr-xr-x. 1 ec2-user ec2-user 7.8K Sep 17 20:42 jdb
-rwxr-xr-x. 1 ec2-user ec2-user 7.8K Sep 17 20:42 jdeps
-rwxr-xr-x. 1 ec2-user ec2-user 7.8K Sep 17 20:42 jhat
-rwxr-xr-x. 1 ec2-user ec2-user 8.0K Sep 17 20:42 jinfo
-rwxr-xr-x. 1 ec2-user ec2-user 7.8K Sep 17 20:42 jjs
-rwxr-xr-x. 1 ec2-user ec2-user 8.0K Sep 17 20:42 jmap
-rwxr-xr-x. 1 ec2-user ec2-user 7.8K Sep 17 20:42 jps
-rwxr-xr-x. 1 ec2-user ec2-user 7.8K Sep 17 20:42 jrunscript
-rwxr-xr-x. 1 ec2-user ec2-user 7.8K Sep 17 20:42 jsadebugd
-rwxr-xr-x. 1 ec2-user ec2-user 8.0K Sep 17 20:42 jstack

因此,如果您鍵入javac並且無法識別該命令,則表明JDK/bin不在PATH 就那么簡單。 這並不意味着未在該主機上安裝JDK(可能的話),只是JRE/bin位於PATH中,而JDK/bin沒有。

當我在沒有路徑的JDK的盒子上執行以下命令時

Java語言

我懂了

The term 'javac' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and
try again.
At line:1 char:6
+ javac <<<<
    + CategoryInfo          : ObjectNotFound: (javac:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException

由於執行以下操作時我的路徑中有運行時

Java版本

我懂了

java version "1.8.0_20"
Java(TM) SE Runtime Environment (build 1.8.0_20-b26)
Java HotSpot(TM) 64-Bit Server VM (build 25.20-b23, mixed mode)

在我執行javac時在路徑上具有jdk的mac上

$ javac
Usage: javac <options> <source files>
where possible options include:
  -g                         Generate all debugging info
  -g:none                    Generate no debugging info
  -g:{lines,vars,source}     Generate only some debugging info
  -nowarn                    Generate no warnings
  -verbose                   Output messages about what the compiler is doing
...

總而言之,我運行javac來查看JDK是否處於活動狀態。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM