JDK(Java Development Kit)即為Java開發工具包,包含編寫Java程序所必須的編譯、運行等開發工具以及JRE。開發工具如:用於編譯java程序的javac命令、用於啟動JVM運行java程序的java命令、用於生成文檔的javadoc命令以及用於打包的jar命令等等
JRE(Java Runtime Environment)即為Java運行環境,提供了運行Java應用程序所必須的軟體環境,包含有Java虛擬機(JVM)和豐富的系統類庫。系統類庫即為java提前封裝好的功能類,只需拿來直接使用即可,可以大大的提高開發效率。
JVM(Java Virtual Machines)即為Java虛擬機,提供了位元組碼文件(.class)的運行環境支持。
JDK、JRE、JVM關系如圖– 4 所示:
圖- 4
從圖示可以看出,JDK中包含了編譯、運行等開發工具及JRE,而JRE中包含了Java系統類庫及JVM,運行一個java程序所需要的最小環境即為JRE,而開發一個Java程序所需要的最小環境為JDK,因為JDK中還包含了很多用到的命令。
㈡ java中JDK調試器命令是
1、首先在電腦中滑鼠右擊「我的電腦」,點擊「屬性」,如下圖所示。
㈢ 編譯java程序的命令是什麼,運行java應用程序的命令是什麼
當前默認目錄為C盤Users文件夾下的Administrator文件夾。一般而言,我們習慣改變當前目錄。由於windows有磁碟分區,若要跳到其他磁碟,例如E盤,有幾種方法:
1、輸入命令: pushd 路徑(此命令可將當前目錄設為所希望的任一個已存在的路徑)
2、輸入命令: e: 轉移到e盤,然後再輸入 cd 轉移到所希望的已知路徑。
希望在windows命令行下使用javac、java、javap等命令,那麼當前電腦必須安裝了jdk,並且將jdk的bin目錄添加到環境變數path下了。
拓展資料:
Java是一種編程語言,被特意設計用於互聯網的分布式環境。Java具有類似於C++語言的「形式和感覺」,但它要比C++語言更易於使用,而且在編程時徹底採用了一種「以對象為導向」的方式。
使用Java編寫的應用程序,既可以在一台單獨的電腦上運行,也可以被分布在一個網路的伺服器端和客戶端運行。另外,Java還可以被用來編寫容量很小的應用程序模塊或者applet,做為網頁的一部分使用。applet可使網頁使用者和網頁之間進行互動式操作。
㈣ java命令
我是這樣配環境變數的~
JAVA_HOME: E:\java\jdk1.5.0_06
classpath: %JAVA_HOME%\LIB;.;
path : %JAVA_HOME%\BIN;.;
java代碼放在哪個文件夾沒有什麼特殊要求~
只要不是什麼不可訪問的文件夾就可以了~
但是你要編譯你的java文件~你就必須用命令進入到你的java文件所在的文件夾~
㈤ java如何接收系統命令
Java調用Linux命令
Java可以直接調用Linux命令,形式如下:
Runtime.getRuntime().exec(command)
舉例:運行ls,top命令可以這樣:
Runtime.getRuntime().exec("ls");
但是這樣執行時沒有任何輸出,原因:
調用Runtime.exec方法將產生一個本地的進程,並返回一個Process子類的實例,
(注意:Runtime.getRuntime().exec(command)返回的是一個Process類的實例),
該實例可用於控制進程或取得進程的相關信息. 由於調用Runtime.exec方法所創建的子進程沒有自己的終端或控制台,因此該子進程的標准IO(如stdin,stdou,stderr)都通過Process.getOutputStream(),Process.getInputStream(), Process.getErrorStream()方法重定向給它的父進程了.用戶需要用這些stream來向子進程輸入數據或獲取子進程的輸出. 可以採用如下方法:
try
{
Process process = Runtime.getRuntime().exec ("ls");
InputStreamReader ir=newInputStreamReader(process.getInputStream());
LineNumberReader input = new LineNumberReader (ir);
String line;
while ((line = input.readLine ()) != null){
System.out.println(line)
}
catch (java.io.IOException e){
System.err.println ("IOException " + e.getMessage());
}
㈥ 如何用命令方式運行java程序
新建一個文本文件,就用windows的記事本吧。
如何在windows命令行窗口運行Java程序
打開記事本,輸入一段代碼。
如何在windows命令行窗口運行Java程序
保存的時候把後綴名修改為.java。
如何在windows命令行窗口運行Java程序
打開運行,在運行輸入欄中輸入cmd。打開命令提示窗口。
如何在windows命令行窗口運行Java程序
先轉到.java文件所在的位置。這里是在d盤的根目錄。
如何在windows命令行窗口運行Java程序
執行以下一句命令之後,可以看見在.java的文件夾裡面生成了一個為.class的類文件。
如何在windows命令行窗口運行Java程序
7
執行以下命令之後,就可以看到結果了。。
如何在windows命令行窗口運行Java程序
㈦ 怎麼用命令提示符運行java程序
這個錯誤顯然是沒有找到對應的.class文件,一般錯誤離不開這幾種
1是,字母拼寫錯了,和你生成的.class文件名稱不一致,所以找不到
2是,路徑錯了。比如你的.class生成在D盤下,可是你現在在C盤運行java命令,顯然也是找不到
3是。你沒有編譯,沒有生成對應的.class文件,重新javac編譯一下
4是你的classpath沒有配置好。一般需要.;%java_home%/lib;%java_home%/lib/tools.jar;這個classpath是從你配置的目錄去找.class文件的。
一般是先找本目錄--也就是.;所以你看一下配置有無問題
%java_home%是你對應的的安裝路徑
首先樓主你先確定你的java和javac沒有錯。
建議樓主首先用 dir 指令查看一下當前目錄下是否生成了.class。然後按上面的幾種試一下解決。
希望能幫到樓主
㈧ 如何利用java過程執行操作系統命令
import java.io.InputStream;
import java.util.ArrayList;
public class JavaExcCommand {
private static String INPUT_STREAM = "INPUTSTREAM";
private static String ERROR_STREAM = "ERRORSTREAM";
/**
* 返回命令執行結果信息串
* @param command 要執行的命令
* @return 第一個為標准信息,第二個為錯誤信息,如果不存在則相應為空
* @throws Throwable String[]
*/
public static String[] exec(String command) throws Throwable {
Process process = null;
Runtime runtime = Runtime.getRuntime();
String osName = System.getProperty("os.name").toLowerCase();
if (osName.indexOf("windows 9") > -1) {
process = runtime.exec("command.com /c " + command);
} else if ((osName.indexOf("nt") > -1)
|| (osName.indexOf("windows 20") > -1)
|| (osName.indexOf("windows xp") > -1 || (osName.indexOf("windows vista") > -1))) {
/*
* 開關/C指明後面跟隨的字元串是命令,並在執行命令後關閉DOS窗口,使用cmd /?查看幫助
*/
process = runtime.exec("cmd.exe /c " + command);
} else {
// Linux,Unix
process = runtime.exec(command);
}
//存儲返回結果,第一個為標准信息,第二個為錯誤信息
String result[] = new String[2];
Object mutexInstream = new Object();
Object mutexErrorstream = new Object();
new ReadThread(process.getInputStream(), INPUT_STREAM, result, mutexInstream)
.start();
new ReadThread(process.getErrorStream(), ERROR_STREAM, result, mutexErrorstream)
.start();
//確保子線程已啟動
Thread.sleep(20);
/*
* 這里一定要等標准流與錯誤都讀完了後才能繼續執行後面的代碼,否則外面引用返回的結果可能
* 為null或空串,所以要等兩個線程執行完,這里確保讀取的結果已返回。在讀取時使用了兩個線
* 程,因為發現在一個線程里讀這種流時,有時會阻塞,比如代碼實現時先讀取標准流,而運行時
* 命令卻執行失敗,這時讀標准流的動作會阻塞,導致程序最終掛起,先讀錯誤流時如果執行時成
* 功,這時又可能掛起。還有一個問題就是即使使用兩個線程分別讀取流,如果不使用同步鎖時,也
* 會有問題:主線程讀不到子線程返回的數據,這主要是由於主線讀取時子線還沒未返回讀取到的信
* 息,又因為兩個讀線程不能互斥,但又要與主線程同步,所以使用了兩個同步鎖,這樣兩個線程誰
* 先執行互不影響,而且主線程阻塞直到標准信息與錯誤信息都返回為止
*/
synchronized (mutexInstream) {
synchronized (mutexErrorstream) {
/*
* 導致當前線程等待,如果必要,一直要等到由該 Process 對象表示的進程已經終止
* 。如果已終止該子進程,此方法立即返回。如果沒有終止該子進程,調用的線程將被
* 阻塞,直到退出子進程。
* process.waitFor()目的是等待子進程完成後再往下執行,不過這里好像沒有什麼
* 太大的作用除了用來判斷返回的狀態碼外,因為如果程序進到這里表示子線程已執行完
* 畢,process子進程理所當然的也已執行完畢,如果子進程process未執行完,我想
* 讀流的操作肯定會阻塞的。
*
* 另外,使用process.waitFor()要注的是一定不要在數據流讀取前使用,否則線程
* 也會掛起,導致該現象的原因可能是該命令的輸內容出比較多,而運行窗口的輸出緩沖
* 區不夠大,最後沒不能寫緩沖引起,所以這里先使用了兩個單獨的線程去讀,這樣不管
* 數據量有多大,都不會阻塞了。
*/
if (process.waitFor() != 0) {
result[0] = null;
} else {
result[1] = null;
}
}
}
return result;
}
public static void main(String args[]) throws Throwable {
if (args.length == 0) {
System.out.println("Useage: \r\n java JavaExcCommand <command>");
return;
}
String[] result = JavaExcCommand.exec(args[0]);
System.out.println("error info:---------------\r\n" + result[1]);
System.out.println("std info:-----------------\r\n" + result[0]);
}
/*
* 標准流與錯誤流讀取線程
*/
private static class ReadThread extends Thread {
private InputStream is;
private String[] resultArr;
private String type;
private Object mutex;
public ReadThread(InputStream is, String type, String[] resultArr, Object mutex) {
this.is = is;
this.type = type;
this.resultArr = resultArr;
this.mutex = mutex;
}
public void run() {
synchronized (mutex) {
try {
int readInt = is.read();
ArrayList result = new ArrayList();
/*
* 這里讀取時我們不要使用字元流與緩沖流,發現執行某些命令時會阻塞,不
* 知道是什麼原因。所有這里使用了最原始的流來操作,就不會出現問題。
*/
while (readInt != -1) {
result.add(Byte.valueOf(String.valueOf((byte) readInt)));
readInt = is.read();
}
byte[] byteArr = new byte[result.size()];
for (int i = 0; i < result.size(); i++) {
byteArr[i] = ((Byte) result.get(i)).byteValue();
}
if (ERROR_STREAM.equals(this.type)) {
resultArr[1] = new String(byteArr);
} else {
resultArr[0] = new String(byteArr);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
}
比如傳遞一個參數為 dir/w ,運行結果如下:
error info:---------------
null
std info:-----------------
驅動器 E 中的卷是 Work
卷的序列號是 9876-AE7E
E:\_\Test 的目錄
[.] [..] .classpath .project [bin] [lib]
[src]
2 個文件 904 位元組
5 個目錄 5,636,612,096 可用位元組
如果傳一個不存在的命令 aaa ,結果如下:
error info:---------------
'aaa' 不是內部或外部命令,也不是可運行的程序
或批處理文件。
std info:-----------------
null
最後來一個查看操作系統的環境變數,注,這里不是使用的System.getXX來獲取的,這是Java虛擬機設置的,我們這里是操作系統所設環境變數,如在window上輸出 set ,或在 Linux 上輸入 env ,window上運行的結果如下:
error info:---------------
null
std info:-----------------
ALLUSERSPROFILE=C:\ProgramData
APPDATA=C:\Users\jiangzhengjun\AppData\Roaming
classpath=D:\java\jdk1.5.0_17/lib;.
CommonProgramFiles=C:\Program Files\Common Files
COMPUTERNAME=JZJ-PC
ComSpec=C:\Windows\system32\cmd.exe
FP_NO_HOST_CHECK=NO
HOMEDRIVE=C:
HOMEPATH=\Users\jiangzhengjun
java_home=D:\java\jdk1.5.0_17
LOCALAPPDATA=C:\Users\jiangzhengjun\AppData\Local
LOGONSERVER=\\JZJ-PC
NUMBER_OF_PROCESSORS=2
OS=Windows_NT
Path=D:\java\jdk1.5.0_17/bin\..\jre\bin\client;D:\java\jdk1.5.0_17/bin\..\jre\bin;D:\java\jdk1.5.0_17/bin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\Common Files\Thunder Network\KanKan\Codecs;C:\Program Files\Broadcom\Broadcom 802.11\Driver
PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC
PROCESSOR_ARCHITECTURE=x86
PROCESSOR_IDENTIFIER=x86 Family 6 Model 23 Stepping 6, GenuineIntel
PROCESSOR_LEVEL=6
PROCESSOR_REVISION=1706
ProgramData=C:\ProgramData
ProgramFiles=C:\Program Files
PROMPT=$P$G
PSMolePath=C:\Windows\system32\WindowsPowerShell\v1.0\Moles\
PUBLIC=C:\Users\Public
SESSIONNAME=Console
SystemDrive=C:
SystemRoot=C:\Windows
TEMP=C:\Users\JIANGZ~1\AppData\Local\Temp
TMP=C:\Users\JIANGZ~1\AppData\Local\Temp
USERDOMAIN=jzj-pc
USERNAME=jiangzhengjun
USERPROFILE=C:\Users\jiangzhengjun
windir=C:\Windows
今天作項目時發現了一個簡潔一點的辦法:
Java代碼
import java.io.InputStream;
import java.util.ArrayList;
public class JavaExcCommand {
/**
* 返回命令執行結果信息串
*
* @param command
* 要執行的命令
* @return 第一個為標准信息,第二個為錯誤信息
* @throws Throwable
* String[]
*/
public static String[] exec(String command) throws Throwable {
Process process = null;
Runtime runtime = Runtime.getRuntime();
// Linux,Unix
process = runtime.exec(command);
// 存儲返回結果,第一個為標准信息,第二個為錯誤信息
String result[] = new String[2];
ReadThread inputReadThread = new ReadThread(process.getInputStream());
ReadThread errReadThread = new ReadThread(process.getErrorStream());
inputReadThread.start();
errReadThread.start();
//確保標准與錯誤流都讀完時才向外界返回執行結果
while (true) {
if (inputReadThread.flag && errReadThread.flag) {
break;
} else {
Thread.sleep(1000);
}
}
result[0] = inputReadThread.getResult();
result[1] = errReadThread.getResult();
return result;
}
public static void main(String args[]) throws Throwable {
if (args.length == 0) {
System.out.println("Useage: \r\n java JavaExcCommand <command>");
return;
}
String[] result = JavaExcCommand.exec(args[0]);
System.out.println("error info:---------------\r\n" + result[1]);
System.out.println("std info:-----------------\r\n" + result[0]);
}
/*
* 標准流與錯誤流讀取線程
*/
private static class ReadThread extends Thread {
private InputStream is;
private ArrayList result = new ArrayList();
public boolean flag;// 流是否讀取完畢
public ReadThread(InputStream is) {
this.is = is;
}
// 獲取命令執行後輸出信息,如果沒有則返回空""字元串
protected String getResult() {
byte[] byteArr = new byte[result.size()];
for (int i = 0; i < result.size(); i++) {
byteArr[i] = ((Byte) result.get(i)).byteValue();
}
return new String(byteArr);
}
public void run() {
try {
int readInt = is.read();
while (readInt != -1) {
result.add(Byte.valueOf(String.valueOf((byte) readInt)));
readInt = is.read();
}
flag = true;// 流已讀完
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
㈨ Java怎麼調用系統命令
Java調用Linux命令Java可以直接調用Linux命令,形式如下:Runtime.getRuntime().exec(command)舉例:運行ls,top命令可以這樣:Runtime.getRuntime().exec("ls");但是這樣執行時沒有任何輸出,原因:調用Runtime.exec方法將產生一個本地的進程,並返回一個Process子類的實例,(注意:Runtime.getRuntime().exec(command)返回的是一個Process類的實例),該實例可用於控制進程或取得進程的相關信息.由於調用Runtime.exec方法所創建的子進程沒有自己的終端或控制台,因此該子進程的標准IO(如stdin,stdou,stderr)都通過Process.getOutputStream(),Process.getInputStream(),Process.getErrorStream()方法重定向給它的父進程了.用戶需要用這些stream來向子進程輸入數據或獲取子進程的輸出.可以採用如下方法:try{Processprocess=Runtime.getRuntime().exec("ls");InputStreamReaderir=newInputStreamReader(process.getInputStream());LineNumberReaderinput=newLineNumberReader(ir);Stringline;while((line=input.readLine())!=null){System.out.println(line)}catch(java.io.IOExceptione){System.err.println("IOException"+e.getMessage());}
㈩ java怎麼運行系統命令
//系統命令
public static void main(String[] args) {
try {
Runtime.getRuntime().exec("notepad");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}