cmd編譯運(yùn)行java程序的方法
0.寫入程序
public class HelloWorld {
public static void main(String[] args){
System.out.println("Hello, World!");
}
}
1.編譯
javac HelloWorld.java -d .
- javac: java語言的編譯器,使用命令行編譯Java源文件,輸出字節(jié)碼文件.class.
- sourcefiles: java源文件的相對路徑,也可以使用絕對路徑。
- options: 這里使用的是-d, 即directory簡寫,表示輸出字節(jié)碼的位置,".“表示當(dāng)前目錄,”…“表示上級目錄,”…\bin"表示在當(dāng)前目錄的上級目錄bin,以此類推。


2.運(yùn)行
java [options] classname [args]
- java: 執(zhí)行程序命令。執(zhí)行順序是啟動JRE->加載class->調(diào)用class的main()方法,main方法必須是public static void main(String[] args)的樣子。
- classname: 要執(zhí)行的class文件的名稱,要加包名,中間以’.'隔開,比如java.lang.String
- options: 一些可選參數(shù)[可參考Java文檔]
成功打印出字符串: Hello, World!
java HelloWorld

3.將class輸出到指定package
E:\myJava\javaSrc>javac HelloWorld.java -d ..
注意存放路徑是"…"即上級目錄,它表示"hello"這個package的生成路徑,class文件會生成在hello包中,如果hello不存在,程序?qū)⒆詣觿?chuàng)建之,在桌面上的結(jié)果,實際就是一個普通目錄而已:

運(yùn)行
java運(yùn)行程序的命令是:
E:\myJava\javaSrc>java ../hello.HelloWorld
錯誤:找不到或無法加載主類
結(jié)果卻是提示找不到class,如果我們現(xiàn)在將CMD打開到hello包所在同級目錄下,即"myJava"目錄,運(yùn)行:
E:\myJava>java hello.HelloWorldHello,World!
程序成功輸出了,也就是java解釋器定位到了class文件。其實,java的解釋器只能找到當(dāng)前路徑下和CLASSPATH變量存儲路徑中的包,所以我必須先把CMD的路徑切換到hello的同級目錄下,然后再運(yùn)行java hello.HelloWorld。
那么如果每次都這樣執(zhí)行,豈不是很麻煩?
4.CLASSPATH
? “The class path is the path that the Java Runtime Environment (JRE) searches for classes and other resource files.”----官方文檔, 即CLASSPATH就是JRE尋找class文件和其它資源文件的地方,因此,為了方便運(yùn)行,就有必要把我們生成的包想辦法放到CLASSPATH變量中,WIn7環(huán)境下的操作方法 是:
右擊“計算機(jī)”->屬性->高級系統(tǒng)設(shè)置->環(huán)境變量->系統(tǒng)變量, 雙擊“CLASSPATH”, 在“變量值”最后輸入";路徑",其中";"是多個CLASSPATH的分隔符號,如圖所示:

目前已經(jīng)不需要設(shè)置CLASSPATH。
因為jdk 在該目錄下有兩個子目錄,分別是.\bin和.\jre\bin, 前者含有用于Java程序編譯以及執(zhí)行的程序javac和java,后者有執(zhí)行程序java。對于用Eclipse,自帶編譯程序,因此只需要在Path中加入%JAVA_HOME%\jre\bin,Eclipse就能運(yùn)行起來,因為jdk既有編譯程序也能提供執(zhí)行環(huán)境。(在dos窗口下執(zhí)行命令時首先會在當(dāng)前目錄下尋找命令相應(yīng)程序,如果找不到就會去path包含目錄的路徑中去尋找)
5.常見錯誤
案例二
D:\myeclipse\Workspaces\example>javac src/com/example/controller/*.java
報錯src\com\example\controller\controller.java:3:軟件包 com.example.model不存在
我們切換目錄,已上文絕對路徑、相對路徑的知識,正確給出Java文件的路徑。這時會報出錯誤,軟件包c(diǎn)om.xxx不存在。因為在controller.java文件中有一個import com.example.model.model,根據(jù)系統(tǒng)默認(rèn)的classpath會在當(dāng)前路徑下找,即D:\myeclipse\Workspaces\example,很明顯這個路徑下沒有com文件。
解決方法,我們告訴編譯器哪個目錄下會有就行了,所以需要加入選項-cp xxxx 或-classpath xxxx
D:\myeclipse\Workspaces\example>javac -cp src src/com/example/controller/*.java
加上參數(shù)-cp src,告訴編譯器可以去src中找,就不會有問題了。
找不到主類

6.引入jar包
特別注意的是在Linux下用冒號:進(jìn)行分隔,而在Windows用分號進(jìn)行分割。
// 正確 D:\myeclipse\Workspaces\example\src>javac -cp .;lib/gson-2.3.1.jar com/example/view/view.java
后面加上;

或者前面加上.;

到此這篇關(guān)于cmd編譯運(yùn)行java程序的方法的文章就介紹到這了,更多相關(guān)cmd編譯運(yùn)行java程序內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java SpringMVC數(shù)據(jù)響應(yīng)超詳細(xì)講解
Spring?MVC?是?Spring?提供的一個基于?MVC?設(shè)計模式的輕量級?Web?開發(fā)框架,本質(zhì)上相當(dāng)于?Servlet,Spring?MVC?角色劃分清晰,分工明細(xì),本章來講解SpringMVC數(shù)據(jù)響應(yīng)2022-04-04
mybatis-plus雪花算法自動生成機(jī)器id原理及源碼
Mybatis-Plus是一個Mybatis的增強(qiáng)工具,它在Mybatis的基礎(chǔ)上做了增強(qiáng),卻不做改變,Mybatis-Plus是為簡化開發(fā)、提高開發(fā)效率而生,但它也提供了一些很有意思的插件,比如SQL性能監(jiān)控、樂觀鎖、執(zhí)行分析等,下面一起看看mybatis-plus雪花算法自動生成機(jī)器id原理解析2021-06-06
Springboot項目中實現(xiàn)微信小程序登錄案例(最新推薦)
文章介紹了如何通過微信開放平臺的授權(quán)登錄功能實現(xiàn)Spring Boot項目與微信小程序的微信登錄,本文通過實例代碼給大家介紹的非常詳細(xì),感興趣的朋友一起看看吧2025-02-02
Java使用@Autowired注解獲取對象為null的幾種情況及解決方法
這篇文章主要給大家介紹了使用@Autowired注解獲取對象為null的幾種情況以及?解決方法,文中有詳細(xì)的代碼示例講解,具有一定的參考價值,需要的朋友可以參考下2023-09-09
spring boot使用@Async異步注解的實現(xiàn)原理+源碼
通常我們都是采用多線程的方式來實現(xiàn)上述業(yè)務(wù)功能,但spring 提供更優(yōu)雅的方式來實現(xiàn)上述功能,就是@Async 異步注解,在方法上添加@Async,spring就會借助AOP,異步執(zhí)行方法,接下來通過本文給大家介紹spring boot異步注解的相關(guān)知識,一起看看吧2021-06-06
基于Java匯總Spock框架Mock靜態(tài)資源經(jīng)驗
這篇文章主要介紹了基于Java匯總Spock框架Mock靜態(tài)資源經(jīng)驗,前面講了?Spock框架Mock對象、方法經(jīng)驗總結(jié),今天分享一下Spock框架中Mock靜態(tài)資源的實踐經(jīng)驗匯總。分成靜態(tài)資源和混合場景,需要的朋友可以參考一下2022-02-02

