寫好你的java文件,打開你的命令提示符,切換到你文件的目錄,【javac+XXXX.java】先編譯你的Java文件,帶后綴名java,再執(zhí)行 【java +“文件名”】命令
創(chuàng)新互聯(lián)建站是一家專注于網(wǎng)站設(shè)計、網(wǎng)站建設(shè)與策劃設(shè)計,梁園網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)建站做網(wǎng)站,專注于網(wǎng)站建設(shè)十載,網(wǎng)設(shè)計領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:梁園等地區(qū)。梁園做網(wǎng)站價格咨詢:13518219792
JDK(Java Development Kit)即為Java開發(fā)工具包,包含編寫Java程序所必須的編譯、運行等開發(fā)工具以及JRE。開發(fā)工具如:用于編譯java程序的javac命令、用于啟動JVM運行java程序的java命令、用于生成文檔的javadoc命令以及用于打包的jar命令等等
JRE(Java Runtime Environment)即為Java運行環(huán)境,提供了運行Java應(yīng)用程序所必須的軟件環(huán)境,包含有Java虛擬機(JVM)和豐富的系統(tǒng)類庫。系統(tǒng)類庫即為java提前封裝好的功能類,只需拿來直接使用即可,可以大大的提高開發(fā)效率。
JVM(Java Virtual Machines)即為Java虛擬機,提供了字節(jié)碼文件(.class)的運行環(huán)境支持。
JDK、JRE、JVM關(guān)系如圖– 4 所示:
圖- 4
從圖示可以看出,JDK中包含了編譯、運行等開發(fā)工具及JRE,而JRE中包含了Java系統(tǒng)類庫及JVM,運行一個java程序所需要的最小環(huán)境即為JRE,而開發(fā)一個Java程序所需要的最小環(huán)境為JDK,因為JDK中還包含了很多用到的命令。
這是摘自JAVA NB 網(wǎng) 上的例子。
如何用java啟動windows命令行程序:
先請編譯和運行下面程序:
import java.util.*;
import java.io.*;
public class BadExecJavac2
{
public static void main(String args[])
{
try
{
Runtime rt = Runtime.getRuntime();
Process proc = rt.exec("javac");
int exitVal = proc.waitFor();
System.out.println("Process exitValue: " + exitVal);
} catch (Throwable t){
t.printStackTrace();
}
}
}
我們知道javac命令,當(dāng)不帶參數(shù)運行javac 程序時,它將輸出幫助說明,為什么上面程序不產(chǎn)生任何輸出并掛起,永不完成呢?java文檔上說,由于有些本地平臺為標(biāo)準(zhǔn)輸入和輸出流所提供的緩沖區(qū)大小有限,如果不能及時寫入子進程的輸入流或者讀取子進程的輸出流,可能導(dǎo)致子進程阻塞,甚至陷入死鎖。所以,上面的程序應(yīng)改寫為:
import java.util.*;
import java.io.*;
public class MediocreExecJavac
{
public static void main(String args[])
{
try
{
Runtime rt = Runtime.getRuntime();
Process proc = rt.exec("javac");
InputStream stderr = proc.getErrorStream();
InputStreamReader isr = new InputStreamReader(stderr);
BufferedReader br = new BufferedReader(isr);
String line = null;
System.out.println("");
while ( (line = br.readLine()) != null)
System.out.println(line);
System.out.println("");
int exitVal = proc.waitFor();
System.out.println("Process exitValue: " + exitVal);
} catch (Throwable t){
t.printStackTrace();
}
}
}
下面是正確的輸出:
D:\javajava MediocreExecJavac
Usage: javac 〈OPTIONs
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
-deprecation Output source locations where deprecated APIs are used
-classpath Specify where to find user class files
-cp Specify where to find user class files
-sourcepath Specify where to find input source files
-bootclasspath Override location of bootstrap class files
-extdirs Override location of installed extensions
-endorseddirs Override location of endorsed standards path
-d Specify where to place generated class files
-encoding Specify character encoding used by source files
-source Provide source compatibility with specified release
-target Generate class files for specific VM version
-version Version information
-help Print a synopsis of standard options
-X Print a synopsis of nonstandard options
-J Pass directly to the runtime system
Process exitValue: 2
D:\java
下面是一個更一般的程序,它用兩個線程同步清空標(biāo)準(zhǔn)錯誤流和標(biāo)準(zhǔn)輸出流,并能根據(jù)你所使用的windows操作系統(tǒng)選擇windows命令解釋器command.com或cmd.exe,然后執(zhí)行你提供的命令。
import java.util.*;
import java.io.*;
class StreamGobbler extends Thread
{
InputStream is;
String type; //輸出流的類型ERROR或OUTPUT
StreamGobbler(InputStream is, String type)
{
this.is = is;
this.type = type;
}
public void run()
{
try
{
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String line=null;
while ( (line = br.readLine()) != null)
{
System.out.println(type + "" + line);
System.out.flush();
}
} catch (IOException ioe)
{
ioe.printStackTrace();
}
}
}
public class GoodWindowsExec
{
public static void main(String args[])
{
if (args.length 1)
{
System.out.println("USAGE: java GoodWindowsExec ");
System.exit(1);
}
try
{
String osName = System.getProperty("os.name" );
System.out.println("osName: " + osName);
String[] cmd = new String[3];
if(osName.equals("Windows XP") ||osName.equals("Windows 2000"))
{
cmd[0] = "cmd.exe" ;
cmd[1] = "/C" ;
cmd[2] = args[0];
}
else if( osName.equals( "Windows 98" ) )
{
cmd[0] = "command.com" ;
cmd[1] = "/C" ;
cmd[2] = args[0];
}
Runtime rt = Runtime.getRuntime();
System.out.println("Execing " + cmd[0] + " " + cmd[1]+ " " + cmd[2]);
Process proc = rt.exec(cmd);
// any error message?
StreamGobbler errorGobbler = new StreamGobbler(proc.getErrorStream(), "ERROR");
// any output?
StreamGobbler outputGobbler = new StreamGobbler(proc.getInputStream(), "OUTPUT");
// kick them off
errorGobbler.start();
outputGobbler.start();
// any error???
int exitVal = proc.waitFor();
System.out.println("ExitValue: " + exitVal);
} catch (Throwable t){
t.printStackTrace();
}
}
}
下面是一個測試結(jié)果:
D:\javajava GoodWindowsExec "copy Test.java Test1.java"
osName: Windows XP
Execing cmd.exe /C copy Test.java Test1.java
OUTPUT已復(fù)制 1 個文件。
ExitValue: 0
D:\java
下面的測試都能通過(windows xp+jdk1.5)
D:\javajava GoodWindowsExec dir
D:\javajava GoodWindowsExec Test.java
D:\javajava GoodWindowsExec regedit.exe
D:\javajava GoodWindowsExec NOTEPAD.EXE
D:\javajava GoodWindowsExec first.ppt
D:\javajava GoodWindowsExec second.doc
function TempSave(ElementID) { CommentsPersistDiv.setAttribute("CommentContent",document.getElementById(ElementID).value); CommentsPersistDiv.save("CommentXMLStore"); } function Restore(ElementID) { CommentsPersistDiv.load("CommentXMLStore"); document.getElementById(ElementID).value=CommentsPersistDiv.getAttribute("CommentContent"); }
java-jar命令設(shè)置啟動參數(shù)三種方法。
1、DpropName等于propValue的形式攜帶,要放在jar參數(shù)前面。
2、參數(shù)直接跟在命令后面。
3、springboot的方式,key等于value方式。
當(dāng)前默認(rèn)目錄為C盤Users文件夾下的Administrator文件夾。一般而言,我們習(xí)慣改變當(dāng)前目錄。由于windows有磁盤分區(qū),若要跳到其他磁盤,例如E盤,有幾種方法:
1、輸入命令:pushd路徑(此命令可將當(dāng)前目錄設(shè)為所希望的任一個已存在的路徑)
2、輸入命令:e:?轉(zhuǎn)移到e盤,然后再輸入cd轉(zhuǎn)移到所希望的已知路徑。
希望在windows命令行下使用javac、java、javap等命令,那么當(dāng)前電腦必須安裝了jdk,并且將jdk的bin目錄添加到環(huán)境變量path下了。
拓展資料:
Java是一種編程語言,被特意設(shè)計用于互聯(lián)網(wǎng)的分布式環(huán)境。Java具有類似于C++語言的“形式和感覺”,但它要比C++語言更易于使用,而且在編程時徹底采用了一種“以對象為導(dǎo)向”的方式。
使用Java編寫的應(yīng)用程序,既可以在一臺單獨的電腦上運行,也可以被分布在一個網(wǎng)絡(luò)的服務(wù)器端和客戶端運行。另外,Java還可以被用來編寫容量很小的應(yīng)用程序模塊或者applet,做為網(wǎng)頁的一部分使用。applet可使網(wǎng)頁使用者和網(wǎng)頁之間進行交互式操作。
參考資料:百度百科:Java編程語言