首页 | 资讯动态 | linux基础 | 系统管理 | 网络管理 | 编程开发 | linux数据库 | 服务器技术 | linux相关 | linux认证 | 嵌入式 | 下载中心 | 专题 | linux招聘 | 镜像站
OKLinux中文技术站
·设为首页
·加入收藏
·联系我们
系统管理: 中文环境 系统管理 桌面应用 内核技术 | Linux基础: 基础入门 安装配置 常用命令 经验技巧 软件应用 | Linux数据库: Mysql Postgre Oracle DB2 Sybase other
网络管理: 网络安全 网络应用 Linux服务器 环境配置 黑客安全 | 编程开发: PHP CC++ Python Perl Shell 嵌入式开发 java jsp | PHP技术: PHP基础 PHP技巧 PHP应用 PHP文摘
Linux资讯 Linux招聘 Linux专题 Apache | Linux相关: 硬件相关 Linux解决方案 Linux认证 企业应用 其它Unix | 相关下载: 资料下载 参考手册 开发工具 服务器类 软路由 其它
 技术搜索:
会员中心 注册会员 高级搜索  
  → 当前位置:首页>编程开发>java>java企业应用>正文

开发工具:在Eclipse中报错的解决方案

http://www.oklinux.cn  2008-03-07  来源: 赛迪网 duduwjf   会员收藏  游客收藏  【 】 

Eclipse中报错“要了解详细信息,请使用-xlint:unchecked重新编译”的解决方案

一、遇到问题:
用ant执行jasperreport的samples\charts示例的build.xml时,无法编译,提示错误如下:
javac:
[javac] Compiling 2 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 重新编译。

二、查了一下资料,知道是泛型的原因,网上查到的解决方案主要有以下几种:

1.编译时带上参数-source 1.4
2.使用@SupressWarnings("unchecked")注释
3.更新你的代码,使用List< Object>. List< Object>的实例能接受任何类型的对象,就像是一个原型List。然而,编译器不会报错。
(以上三种方法来源:http://www.matrix.org.cn/resource/article/43/43634_java_generics.html)

4.如果你用的Ant,使用build.xml编译的话,可以右击build.xml文件,
执行 构成和执行,选择 参数,在《程序参数》里面输入-xlint:unchecked即可;

5.找到build.xml里面类似的语句,加上一句话:
< !-- Java Compile
< target name="compile" depends="init">
< javac srcdir="src" destdir="${classdir}"
deprecation="on" encoding="Windows-31J" debug="on" includes="**/jp/**">
< compilerarg value="-Xlint:unchecked"/> `< !-- 就是这句话!!
< classpath refid="project.class.path" />
< /javac>
< /target>
(以上两种方法来源:http://www.itwenku.com/java/12/47796.htm)

三、自己的试验与结论

第一种:
“编译时带上参数-source 1.4”使用方法:
找到build.xml里面类似的语句,加上一句话:
< javac srcdir="${src.dir}" destdir="${classes.dir}" >
< classpath refid="classpath"/>
< compilerarg line="-source 1.5"/> `< !-- 就是这句话!注意与第五种方式不同的是line标签而不是value!
< /javac>
编译通过,charts下的报表出现了!

第二种:
“使用@SupressWarnings("unchecked")注释”:
在ChartsApp.java的main函数前加上了这个注释,但是没有起作用,提示错误依然是“[javac] 注意: 要了解详细信息,请使用 -Xlint:unchecked 重新编译。”,怎么回事呢?

在一篇文章中找到了答案:
http://www.matrix.org.cn/resource/article/43/43864_Generic_Types.html
在撰写本文时候,javac并不支持@SuppressWarnings 的注解。期望在Java 5.1中得到支持。

第三种:
更改代码为泛型使用方式:
原来的代码:
Map parameters = new HashMap();
parameters.put("MaxOrderID", new Integer(12500));

更改后的代码:
Map< String,Integer> parameters = new HashMap< String,Integer> ();
parameters.put("MaxOrderID", new Integer(12500));
或者:
Map< Object,Object> parameters = new HashMap< Object,Object> ();
parameters.put("MaxOrderID", new Integer(12500));

更改后,顺利通过编译,也能看到报表了!!

第四种:
经验证无效;

第五种:
< javac srcdir="src" destdir="${classdir}"
deprecation="on" encoding="Windows-31J" debug="on" includes="**/jp/**">
< compilerarg value="-Xlint:unchecked"/> `< !-- 就是这句话!!
< classpath refid="project.class.path" />
< /javac>

加上"< compilerarg value="-Xlint:unchecked"/>" 后,出现"警告",不过编译顺利通过,也能看到报表了!
编译提示如下:
[javac] Compiling 2 source files to E:\jiangcm\workspace-forict-myeclipse\jasperreports\demo\samples\charts
[javac] E:\jiangcm\workspace-forict-myeclipse\jasperreports\demo\samples\charts\ChartsApp.java:115: 警告: [unchecked] 对作为普通类型 java.util.Map 的成员的 put(K,V) 的调用未经检查
[javac] parameters.put("MaxOrderID", new Integer(12500));
[javac] ^
[javac] 1 警告


呵呵,答案是丰富多彩的,条条大道通罗马,这次不仅解决了问题,还找到了四种解决问题的方法。


参考资料:
1.J2SE 5.0中的泛型
作者:Budi Kurniawan
http://www.matrix.org.cn/resource/article/43/43634_java_generics.html
2.Eclipse中报jsp中有错误“要了解详细信息,请使用-xlint:unchecked重新编译”,具体在菜单上怎么操作?
http://www.itwenku.com/java/12/47796.htm
3.泛型类型,第一部分
作者: David Flanagan
http://www.matrix.org.cn/resource/article/43/43864_Generic_Types.html
4.有关ant的faq
http://www.blogjava.net/luckyrobbie/articles/24117.html

Q. How to pass -Xlint or -Xlint:unchecked to 1.5 javac task?
A: pass it as compilerarg nested < compilerarg> to specify.

< compilerarg value="-Xlint"/>
< !-- or
< compilerarg value="-Xlint:unchecked"/>

共2页: 上一页 1 [2] 下一页

上一篇:Hibernate源码中几个包的作用简要介绍   下一篇:开发框架:深入了解 Struts Validator


收藏于收藏夹】 【评论】 【推荐】 【打印】 【关闭
相关文档
·Hibernate源码中几个包的作用简要介绍
·开发框架:深入了解 Struts Validator
·Java语言:敏捷开发技巧-消除代码异味
·开发框架:利用STRUTS实现国际化支持
·开发框架:一篇关于SSH架构的简单总结
·多线程设计模式:了解wait/notify机制
·数据库相关:hibernate O/R映射之基础
·jboss4.0下使用MySql数据源的设置方法
·visitor模式概念-- visitor模式进一步
·Commons-logging Log4j 的入门指南
·设计及设计模式--设计模式之事务处理
·开发框架:深入分析JSF与Struts的异同
·超级简单的 sqlmap 工具(ajf sql map)
·开发框架--谈谈对struts多模块的认识
·开发框架:我认为Spring的一些负面因素
·框架:struts的tiles框架应用的一些体会
发表评论
密码: 匿名评论
评论内容:

(不超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规)
 
  最新文档
·Java SE6调用Java编译器的两种新方法
·表现层框架Struts/Tapestry/JSF比较
·在Web项目中用到JNI时应该注意的问题
·JBuilder7 Weblogic7 mysql开发EJB配置
·进阶:Java Reflection (JAVA反射)详解
·以全局的固定顺序获取多个锁来避免死锁
·JAVA高级:Java中限时线程回调方式的实
·超线程多核心下Java多线程编程彻底分析
·开发JAVA编程中字符串分割的两种方法
·Java理论和实践:用软引用阻止内存泄漏
·JAVA入门基础:区分引用类型和原始类型
·学习心得 - JSP处理异常及一些高级主题
  阅读排行
·Commons-logging Log4j 的入门指南
·进阶:Java Reflection (JAVA反射)详解
·服务器及中间件:TomCat 多虚拟站点配置
·开发框架:一篇关于SSH架构的简单总结
·jboss4.0下使用MySql数据源的设置方法
·Java语言:敏捷开发技巧-消除代码异味
·Java SE6调用Java编译器的两种新方法
·使用JAVA中的动态代理实现数据库连接池
·架构与模式:多线程有几种常用的编程模
·数据库相关:Log4j和JDBMonitor的比较
·开发框架-Struts里过滤器的简单使用
·表现层框架Struts/Tapestry/JSF比较
·在Web项目中用到JNI时应该注意的问题
·Java 安全:Java 语言的 XML 验证 API
·开发框架:利用STRUTS实现国际化支持
网摘收藏: