在项目的亩袭属性里设置jdk版本,型耐洞方法是卜枯右击项目-->properties-->java compiler -->Enable project specific settings -->将compiler compliance level设置为1.8,也就是与jvm一致的版本
免费看《Windows CE 嵌入式系统开发 从基础到实践》 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 然而 编译器不会报错
(以上三种方法来源 // matrix cn/resource/article/ / _java_generics )
如果你用的Ant 使用build xml编译的话 可以右击build xml文件
>执行 >构成和执行 选择 参数 在《程序参数》里面输入 xlint:unchecked即可
找到build xml里面类似的语句 加上一句话
<! Java Compile ><target name= pile depends= init ><javac srcdir= src destdir= ${classdir} deprecation= on encoding= Windows J debug= on includes= **/jp/** ><pilerarg value= Xlint:unchecked />`<! 就是这改碧句话!! ><classpath refid= project class path /></javac></target>
(以上两种方法来源 // ienku /java/ / )
三 自己的试验与结论
第一种
编译时带上参数 source 使用方法
找到build xml里面类似的语句 加上一句话
核搏举 <javac srcdir= ${src dir} destdir= ${classes dir} ><classpath refid= classpath /><pilerarg line= source />`<! 就是这句话!注意与第五种方式不同的是line标签而不是value! ></javac>
编译通过 charts下的报表银闹出现了!
第二种
使用@SupressWarnings( unchecked )注释
在ChartsApp java的main函数前加上了这个注释 但是没有起作用 提示错误依然是 [javac] 注意 要了解详细信息 请使用 Xlint:unchecked 重新编译 怎么回事呢?
在一篇文章中找到了答案
// matrix cn/resource/article/ / _Generic_Types
在撰写本文时候 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/** ><pilerarg value= Xlint:unchecked />`<! 就是这句话!! ><classpath refid= project class path /></javac>
加上 <pilerarg 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] 警告
呵呵 答案是丰富多彩的 条条大道通罗马 这次不仅解决了问题 还找到了四种解决问题的方法
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)