或許很多java初學者都會用javac、java命令運行程序,運行過幾次后就轉向開發工具。我本人也是這樣,很久沒有用命令行去執行java文件了,現在都是用eclipse、intellij idea等編譯工具直接編譯運行。
昨天開始學習《算法》,里面很多代碼都用到了命令行重定向文件實現輸入輸出,所以昨天用命令去執行class文件時碰到了一個noclassdefounderror異常,網上說的也很雜,看得"一頭霧水",其實還是基礎不好,搞清楚原理很多問題就迎刃而解了。
idea編譯后java文件和class文件不在同一個目錄(后來發現和這沒關系)
重新建一些目錄測試
然后cmd進入當前目錄,javac編譯生成class文件,然后復制到out\com\test目錄
然后進入該目錄(模擬idea目錄),java helloworld運行報錯
查了很多資料,發現只要在包的上一層目錄(src)或者在任意目錄添加classpath都可以運行
方法一:
方法二:
終于成功運行了,可以愉快地玩代碼了...
知識點:
包是java中為了解決命名沖突而設置的,一個程序寫了包和沒寫在jvm中是兩個東西,若沒寫,默認包,虛擬機會把所有的不寫包名的類規整在一起組成默認包,默認包時不需要注意文件包結構
補充:idea 項目編譯后沒有class文件
問題
idea項目突然無法運行,提示找不到某個類。查看了編譯輸出目錄out,發現沒有class文件。
嘗試解決
嘗試刪除out、重新導入項目、在gradle面板點擊刷新,都沒能解決問題。
問題解決
最后,點擊build->rebuild project解決。不明原因,先做下記錄。
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持服務器之家。如有錯誤或未考慮完全的地方,望不吝賜教。
原文鏈接:https://blog.csdn.net/a1275302036/article/details/79277196