2012-04-03 66 views
0

我在Eclipse Indigo項目中使用了一個名爲Weka的開源java庫。該庫看起來有點過時,所以Eclipse向我展示了數千條關於其代碼的警告。一個典型的例子是:如何避免必須使用@SupressWarnings?

ArrayList的是原始類型。引用泛型類型的ArrayList < E> 應該是參數

在談到這樣一行:

ArrayList t = new ArrayList(); 

Eclipse的速戰速決表明我可以轉換上面的代碼中使用泛型或我可以添加一個@SuppressWarnings'rawtypes'註釋作爲修復。

但無論這些修補程序涉及更動開源項目的代碼,我不得不做這些改變幾個(幾百?)次以上。

相反,可能會有一些Eclipse全局設置(或Java編譯器?),在那裏我可以表明我不想被警告的具體項目?

+0

當我使用谷歌,我得到... http://help.eclipse.org/indigo/index.jsp?topic=%2Forg.eclipse.jdt.doc.user%2Freference%2Fpreferences%2Fjava%2Fcompiler% 2Fref-preferences-errors-warnings.htm – 2012-04-03 16:27:31

+0

謝謝Brian。我已經編輯了這個問題,以反映我並不關心一個警告信息的事實 - 我想避免所有這些信息用於特定項目。 – urig 2012-04-05 11:36:27

回答

1

有人建議您只需通過Window> Preferences關閉「違規」警告,但是它會關閉工作區中的所有項目,包括包含您自己的Java 1.5 +代碼的項目。這是一個壞主意,'因爲如果它們出現在你的代碼中,你應該注意警告。 (如果你忽略他們,你是容易得到意想不到的運行時異常。)

另一種可能性是更改項目設置Java編譯器的源代碼級別設置爲Java 1.4或更早版本。你應該只有在Weka項目上做到這一點。包含您的代碼的項目需要使用至少Java 1.5的源代碼級別,因爲您使用的是泛型。


謝謝。當我將項目部署到運行JRE 1.6的生產服務器時,可能會在稍後導致問題嗎?我不需要在那裏存在JRE 1.4嗎?

不......一對夫婦的原因:

  • 除非你正在修改Weka中,你可以使用原來的JAR和忽略的Eclipse創建的所有構建工件。

  • 源級別和目標級別不同。源代碼級別表示源代碼必須符合的Java語言版本。目標級別表示應該使用什麼版本的類文件格式。您可以讓Java編譯器爲Java 1.4源代碼生成Java 1.6字節碼格式。 (但反之亦然)。

  • Java 1.6 JRE將很高興地運行Java 1.4 JAR。

而且,當我做到這一點?你的意思是項目>屬性> Java編譯器>編譯器符合性級別?

是的。請注意,它允許您獨立指定源級別和目標級別......模仿Java編譯器僅允許某些組合的約束條件。

+0

+1,這比在IDE中關閉某些警告更好。 – darrengorman 2012-04-03 16:41:34

+0

謝謝。當我將項目部署到運行JRE 1.6的生產服務器時,可能會在稍後導致問題嗎?我不需要在那裏存在JRE 1.4嗎? – urig 2012-04-03 16:42:38

+0

另外,我在哪裏可以做到這一點?你的意思是項目>屬性> Java編譯器>編譯器符合性級別? – urig 2012-04-03 16:51:10

1

嘗試Window-> Preferences,Java-> Compiler-> Errors/Warnings。我看到底部附近有一個「通用類型」部分。我不知道這正是您想要的,但根據我的經驗,這是忽略特定Eclipse警告的好地方。

+0

+1,但從我的經驗來看,這是一個打開更多警告的好地方。 – 2012-04-03 16:30:09

+0

謝謝。絕對是一種選擇。當然,我需要點擊「配置項目特定設置...」並選擇我的Weka項目來處理。但不利的一面是,我必須查看一長串不同的警告類型,並將每個警告類型設置爲忽略。 A但麻煩。 – urig 2012-04-03 16:44:22

1

在Eclipse導航到窗口 - >首選項 - > Java的>反編譯>錯誤/警告 - >泛型類型在這裏你會發現「原始類型的使用」,你可以設置爲忽略,而不是警告類別。

4

窗口>首選項>的Java>編譯器>錯誤/警告>泛型類型。或者,可以通過右鍵單擊項目>屬性> Java>錯誤/警告>選中「啓用項目特定設置」來逐項目設置項目(如果您的工作區中還有其他項目需要保持不變)然後像以前一樣。

相關問題