2014-10-29 239 views
0

我使用今天的日期編譯了一個java程序,然後我將系統日期更改爲昨天並修改了java文件。現在它不會編譯。我今天還有創建日期的課程。Ant編譯問題

<project name="SampleTest"> 
<target name="compile"> 
    <javac srcdir="${user.dir}" destdir="${user.dir}"/> 
</target> 
<target name="run"> 
    <java classname="TestSample" classpath="."/> 
</target> 
</project> 

在此,我得到警告消息

編譯: [javac的]警告:TestSample.class在將來修改。 編譯於2004年8月5日的Apache Ant版本1.6.2

回答

0

Warning: modified in the future可能包含您正在尋找的某種解釋。對此行爲有很多想法,例如:

「像Ant這樣的問題可能源於FAT/FAT32文件系統缺乏時間戳精度的問題,在Windows上使用NTFS代替,請參閱我的答案中的詳細信息。

或者:

「JSP文件編譯很多服務器還允許您更換一個正在運行的服務器上的文件,然後它會比較編譯源的時間戳和JSP文件的時間戳,以確定它是否。需要重新編譯。

如果文件是在未來日期,JSP文件將永遠是比類新。這給你一個警告。

檢查文件的時間戳。也許有人創建了它一臺時鐘不正確的計算機,現在它似乎是「未來創建的」,或者也許是服務器不正確的日期(檢查時區設置)。

是否存在涉及遠程文件服務器?在網絡服務器和文件服務器之間的時鐘漂移也會導致這個錯誤。「

但是我對你提出的問題是你到底在做什麼?我確信這是作爲某種方式實現的故障安全的行爲。如果是這樣的話,那麼它肯定工作。

你總是可以考慮讓螞蟻先刪除.class文件。

+0

我面對這個問題,有一次我的系統日期是錯誤的。因此,嘗試測試這種情況,但是爲什麼相同的場景在通過控制檯進行普通的java編譯時工作正常 – Sivaraman 2014-10-29 13:25:10

+0

這是導致問題的Ant,Java編譯器似乎並不關心文件的時間戳,但Ant確實如此。 – sfedak 2014-10-29 13:41:18