Eclipse中報錯
要了解詳細信息
請使用
xlint:unchecked重新編譯
的解決方案
一遇到問題用ant執行jasperreport的samples\charts示例的build
xml時
無法編譯
提示錯誤如下
javac:
[javac] Compiling
source files to E:\jiangcm\workspace
forict
myeclipse\jasperreports\demo\samples\charts
[javac] 注意
E:\jiangcm\workspace
forict
myeclipse\jasperreports\demo\samples\charts\ChartsApp
java 使用了未經檢查或不安全的操作
[javac] 注意
要了解詳細信息
請使用
Xlint:unchecked 重新編譯
二查了一下資料知道是泛型的原因網上查到的解決方案主要有以下幾種
編譯時帶上參數
source
使用@SupressWarnings(
unchecked
)注釋
更新你的代碼
使用List<Object>
List<Object>的實例能接受任何類型的對象
就像是一個原型List
然而
編譯器不會報錯
(以上三種方法來源
l)
如果你用的Ant
使用build
xml編譯的話
可以右擊build
xml文件
> 執行
> 構成和執行
選擇 參數
在《程序參數》裡面輸入
xlint:unchecked即可;
找到build
xml裡面類似的語句
加上一句話
<!
Java Compile
>
<target name=
compile
depends=
init
>
<javac srcdir=
src
destdir=
${classdir}
deprecation=
on
encoding=
Windows
J
debug=
on
includes=
**/jp/**
>
<compilerarg value=
Xlint:unchecked
/> `<!
就是這句話!!
>
<classpath refid=
project
class
path
/>
</javac>
</target>
(以上兩種方法來源
)
三自己的試驗與結論第一種
編譯時帶上參數
source
使用方法
找到build
xml裡面類似的語句
加上一句話
<javac srcdir=
${src
dir}
destdir=
${classes
dir}
>
<classpath refid=
classpath
/>
<compilerarg line=
source
/> `<!
就是這句話!注意與第五種方式不同的是line標簽而不是value!
>
</javac>
編譯通過
charts下的報表出現了!
第二種
使用@SupressWarnings(
unchecked
)注釋
在ChartsApp
java的main函數前加上了這個注釋
但是沒有起作用
提示錯誤依然是
[javac] 注意
要了解詳細信息
請使用
Xlint:unchecked 重新編譯
怎麼回事呢?
在一篇文章中找到了答案
l
在撰寫本文時候
javac並不支持@SuppressWarnings 的注解
期望在Java
中得到支持
第三種
更改代碼為泛型使用方式
原來的代碼
Map parameters = new HashMap();
parameters
put(
MaxOrderID
new Integer(
));
更改後的代碼
Map<String
Integer> parameters = new HashMap<String
Integer> ();
parameters
put(
MaxOrderID
new Integer(
));
或者
Map<Object
Object> parameters = new HashMap<Object
Object> ();
parameters
put(
MaxOrderID
new Integer(
));
更改後
順利通過編譯
也能看到報表了!!
第四種
經驗證無效
第五種
<javac srcdir=
src
destdir=
${classdir}
deprecation=
on
encoding=
Windows
J
debug=
on
includes=
**/jp/**
>
<compilerarg value=
Xlint:unchecked
/> `<!
就是這句話!!
>
<classpath refid=
project
class
path
/>
</javac>
加上
<compilerarg value=
Xlint:unchecked
/>
後
出現
警告
不過編譯順利通過
也能看到報表了!
編譯提示如下
[javac] Compiling
source files to E:\jiangcm\workspace
forict
myeclipse\jasperreports\demo\samples\charts
[javac] E:\jiangcm\workspace
forict
myeclipse\jasperreports\demo\samples\charts\ChartsApp
java:
: 警告
[unchecked] 對作為普通類型 java
util
Map 的成員的 put(K
V) 的調用未經檢查
[javac] parameters
put(
MaxOrderID
new Integer(
));
[javac] ^
[javac]
警告
呵呵
答案是豐富多彩的
條條大道通羅馬
這次不僅解決了問題
還找到了四種解決問題的方法
參考資料
J
SE
中的泛型
作者
Budi Kurniawan
l
Eclipse中報jsp中有錯誤
要了解詳細信息
請使用
xlint:unchecked重新編譯
具體在菜單上怎麼操作?
泛型類型
第一部分
作者: David Flanagan
l
有關ant的faq
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/28243.html