簡體   English   中英

為什么我的 Java 代碼更改在從命令行運行但在 Eclipse 中運行時沒有反映出來?

[英]Why are my Java code changes not being reflected when ran from command line but working in Eclipse?

我正在使用 bash 腳本來運行我在 Eclipse 中創建的 Java 程序,而 Java 程序在從 Eclipse 運行時工作正常。它有我最近的更改,我可以通過我剛剛插入並再次運行的一些打印語句來判斷。

然而,當我運行我的 bash 腳本時,這些打印語句和我的所有其他更改都沒有被看到,它實際上只是像這樣運行程序(使用 testNG):

java -cp ".\src\main\java;lib\*;" org.testng.TestNG ParallelTestXML.xml

我已經清理了 Eclipse 中的項目並確保自動構建被點擊,盡管我認為如果它沒有在 Eclipse 中編譯最近的更改,我認為這是修復。所以我不知道它可能是什么。

因為.\src\main\java沒有做任何有用的事情。

Eclipse 具有稱為“構建器”和“項目種類”的概念,並且根據您設置 java 項目的方式,eclipse 的構建保存架構的工作方式不同。

假設你剛剛去了:“文件 > 新項目 > Java 項目”,並選擇了所有默認選項,eclipse 的設置方式是你有一個src目錄(你寫src/main/java的事實掩蓋了你沒有不要這樣做,但為了示例我會繼續),當您在 eclipse 中保存任何 java 文件時,eclipse 將立即更新它的構建視圖,並且它將位於項目根目錄下的目錄中叫bin

這就是 class 文件所在的位置,所以如果你想在命令行上運行這些文件,正確的做法是:

java -cp ".\bin;lib\*;" org.testng.TestNG ParallelTestXML.xml

添加 src 目錄是完全沒有意義的,除非 class 文件就在源文件旁邊,在這種情況下調用該目錄src顯然是非常愚蠢的(作為編程的一般規則,選擇一個明顯存在的名稱是非常糟糕的想法,原因很明顯)。

如果您有一些其他項目設置,例如,您已將其設置為 maven 項目或 gradle 項目,那么,這取決於您如何配置 eclipse eclipse 是否正在嘗試“匹配”構建,或者正在觸發每次保存時都會構建完整的 maven,或者如果您應該手動調用 maven。 最有可能是后者。 讓 maven 來建造,然后 maven 會在某個地方建造你的東西。 通常, {projroot}\target\classes ,但如果您的應用是使用 maven 構建的,要“運行”您的應用,請不要調用java 調用mvn ,要求它測試你的東西。 這樣 mvn 將照顧您的部門等。

暫無
暫無

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

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