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然而编译器不会报错
如果你用的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>
三自己的试验与结论
第一种
编译时带上参数source 使用方法
找到buildxml里面类似的语句加上一句话
< javac srcdir=${srcdir} destdir=${classesdir} >
< classpath refid=classpath/>
< compilerarg line=source /> `< ! 就是这句话!注意与第五种方式不同的是line标签而不是value! >
< /javac>
编译通过charts下的报表出现了!
第二种
使用@SupressWarnings(unchecked)注释:
在ChartsAppjava的main函数前加上了这个注释但是没有起作用提示错误依然是[javac] 注意 要了解详细信息请使用 Xlint:unchecked 重新编译怎么回事呢?
在一篇文章中找到了答案
在撰写本文时候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] 警告
呵呵答案是丰富多彩的条条大道通罗马这次不仅解决了问题还找到了四种解决问题的方法