java

位置:IT落伍者 >> java >> 浏览文章

Java开发工具Eclipse使用中报错的详细分析


发布日期:2023年12月16日
 
Java开发工具Eclipse使用中报错的详细分析
免费看《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/>

               

上一篇:谈谈对struts多模块的认识

下一篇:struts2学习:配置篇值请求处理元素[2]