免費看《Windows CE 嵌入式系統開發
從基礎到實踐》
Eclipse中報錯要了解詳細信息請使用xlint:unchecked重新編譯的解決方案
一遇到問題
用ant執行jasperreport的samples\charts示例的buildxml時無法編譯提示錯誤如下
javac:
[javac] Compiling source files to E:\jiangcm\workspaceforictmyeclipse\jasperreports\demo\samples\charts
[javac] 注意 E:\jiangcm\workspaceforictmyeclipse\jasperreports\demo\samples\charts\ChartsAppjava 使用了未經檢查或不安全的操作
[javac] 注意 要了解詳細信息請使用 Xlint:unchecked 重新編譯
二查了一下資料知道是泛型的原因網上查到的解決方案主要有以下幾種
編譯時帶上參數source
使用@SupressWarnings(unchecked)注釋
更新你的代碼使用List< Object> List< Object>的實例能接受任何類型的對象就像是一個原型List然而編譯器不會報錯
(以上三種方法來源http://wwwmatrixorgcn/resource/article//_java_genericshtml)
如果你用的Ant使用buildxml編譯的話可以右擊buildxml文件
> 執行 > 構成和執行選擇 參數在《程序參數》裡面輸入xlint:unchecked即可;
找到buildxml裡面類似的語句加上一句話
< ! Java Compile >
< target name=compile depends=init>
< javac srcdir=src destdir=${classdir}
deprecation=on encoding=WindowsJ debug=on includes=**/jp/**>
< compilerarg value=Xlint:unchecked/> `< ! 就是這句話!! >
< classpath refid=projectclasspath />
< /javac>
< /target>
(以上兩種方法來源http://wwwitwenkucom/java//htm)
三自己的試驗與結論
第一種
編譯時帶上參數source 使用方法
找到buildxml裡面類似的語句加上一句話
< javac srcdir=${srcdir} destdir=${classesdir} >
< classpath refid=classpath/>
< compilerarg line=source /> `< ! 就是這句話!注意與第五種方式不同的是line標簽而不是value! >
< /javac>
編譯通過charts下的報表出現了!
第二種
使用@SupressWarnings(unchecked)注釋
在ChartsAppjava的main函數前加上了這個注釋但是沒有起作用提示錯誤依然是[javac] 注意 要了解詳細信息請使用 Xlint:unchecked 重新編譯怎麼回事呢?
在一篇文章中找到了答案
http://wwwmatrixorgcn/resource/article//_Generic_Typeshtml
在撰寫本文時候javac並不支持@SuppressWarnings 的注解期望在Java 中得到支持
第三種
更改代碼為泛型使用方式
原來的代碼
Map parameters = new HashMap();
parametersput(MaxOrderID new Integer());
更改後的代碼
Map< StringInteger> parameters = new HashMap< StringInteger> ();
parametersput(MaxOrderID new Integer());
或者
Map< ObjectObject> parameters = new HashMap< ObjectObject> ();
parametersput(MaxOrderID new Integer());
更改後順利通過編譯也能看到報表了!!
第四種
經驗證無效;
第五種
< javac srcdir=src destdir=${classdir}
deprecation=on encoding=WindowsJ debug=on includes=**/jp/**>
< compilerarg value=Xlint:unchecked/> `< ! 就是這句話!! >
< classpath refid=projectclasspath />
< /javac>
加上< compilerarg value=Xlint:unchecked/> 後出現警告不過編譯順利通過也能看到報表了!
編譯提示如下
[javac] Compiling source files to E:\jiangcm\workspaceforictmyeclipse\jasperreports\demo\samples\charts
[javac] E:\jiangcm\workspaceforictmyeclipse\jasperreports\demo\samples\charts\ChartsAppjava:: 警告 [unchecked] 對作為普通類型 javautilMap 的成員的 put(KV) 的調用未經檢查
[javac] parametersput(MaxOrderID new Integer());
[javac] ^
[javac] 警告
呵呵答案是豐富多彩的條條大道通羅馬這次不僅解決了問題還找到了四種解決問題的方法
參考資料
JSE 中的泛型
作者Budi Kurniawan
http://wwwmatrixorgcn/resource/article//_java_genericshtml
Eclipse中報jsp中有錯誤要了解詳細信息請使用xlint:unchecked重新編譯具體在菜單上怎麼操作?
http://wwwitwenkucom/java//htm
泛型類型第一部分
http://wwwmatrixorgcn/resource/article//_Generic_Typeshtml
有關ant的faq
http://wwwblogjavanet/luckyrobbie/articles/html
Q How to pass Xlint or Xlint:unchecked to javac task?
A: pass it as compilerarg nested < compilerarg> to specify
< compilerarg value=Xlint/>
< ! or >
< compilerarg value=Xlint:unchecked/>
From:http://tw.wingwit.com/Article/program/Java/ky/201311/29113.html