我遇到一個很煩人的問題對我來說,我想象編譯文件FooBar.java:Java編譯器是使用舊版本的源代碼
$ javac的FooBar.java
它編譯sucefully然後我運行它像往常一樣:
$ java的FooBar的< in.txt
我得到了預期的輸出結果,如果我改變源代碼(FooBar.java)來打印其他東西並重新編譯,我會得到與第一次相同的輸出!
這真的讓我很生氣......有沒有javac的緩存?即使我刪除FooBar.class並重新編譯,我也會從早期的源代碼中得到輸出。我發現要解決這個問題的唯一方法是刪除FooBar.java並創建一個名稱不同的新文件(我只是複製代碼),這是有效的。
這個錯誤(?)真的讓我煩惱。我尋找解決方案或解釋爲什麼發生這種情況,但沒有運氣。
這似乎是因爲我沒有使用任何IDE和類路徑指向我的工作文件夾可能與我的問題,但不完全: http://www.coderanch.com/t/519372/java/java/Executing-Old-Code
我想找出是什麼導致這是我不不想做一個新的文件,每次我更新的源代碼...我在Windows上使用Java 1.6.0_27
感謝您的閱讀...
您是如何編譯的?您是否使用Eclipse之類的IDE?對不起,沒有看到「我不使用IDE」。你用什麼命令來編譯?如果您刪除.class文件,會發生什麼情況? – km1 2012-08-16 00:56:48
正如我所說,我正在使用** javac **。如果我刪除.class文件並重新編譯,問題仍然存在......它會編譯舊代碼... – 2012-08-16 00:59:41
刪除類文件,請勿編譯並運行java命令。這將驗證您運行的是與您認爲的不同的類文件。 – km1 2012-08-16 01:02:22