`
ihuashao
  • 浏览: 4651608 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

要了解详细信息,请使用-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"/>

分享到:
评论

相关推荐

    重新编译打包的XmlSchema.1.1.1.jar和xfire-all1.2.6.jar

    为了解决spring整合cxf,xfire遇到的jar包冲突问题,将XmlSchema.1.1.1.jar和xfire-all1.2.6.jar修改后进行了重新编译打包

    java除去类里面的黄色警告

    在Java编程中,IDE(如MyEclipse)会通过颜色编码来标识代码中的不同状态,其中黄色警告通常意味着代码可能存在潜在的问题或不建议使用的特性,但并不一定导致编译错误。这些警告旨在帮助开发者提高代码质量和性能,...

    DXperience 8.3.2 重新编译版(无任何问题)

    DXperience 8.3.2 重新编译版,最新版本,经测试,无任何问题。

    blake:Dart语言的静态网站生成器。 Markdown支持,Mustache模板,YAML配置,实时重新加载并编译为单个本机二进制文件

    您可以在上下载编译的二进制文件。当前,构建是手动完成的,并不是每个发行版都可以使用每个平台(例如Windows / Mac / Linux)。 另一种选择是使用pub global activate blake 。 用法 使用blake init在当前目录中...

    Eclipse

    错误信息指出,在编译`ChartsApp.java`文件时,检测到未检查的类型转换,建议使用`-Xlint:unchecked`选项来获取更详细的警告信息。这一错误通常发生在以下几种情况: 1. **代码中使用了未经检查的转换或集合**:如...

    java泛型源码-GenericsJavaAssignment03:我的Java中级编程类的第三次作业。有关说明和解决方案的源代码,请参见自述

    java泛型源码泛型JavaAssignment03 我的Java中级编程类的第三次...注意:使用-Xlint:unchecked重新编译以获取详细信息。 您可以根据需要定义新的类,以使您的程序按要求运行,但是您不能修改名为Proj03的类的类定义。

    java泛型源码-GenericsJavaAssignment02:我的Java中级编程类的第二个任务。有关说明和解决方案的源代码,请参见自述

    java泛型源码泛型JavaAssignment02 我的Java中级编程类的第二个任务。...注意:使用-Xlint:unchecked重新编译以获取详细信息。 您可以根据需要定义新的类,以使程序按要求运行,但不能修改名为Proj02的类的类定义。

    java编译时出现使用了未经检查或不安全的操作解决方法

    1. **使用-Xlint:unchecked 重新编译**:在编译命令行中添加`-Xlint:unchecked`选项,可以显示所有未检查的转换警告,这样可以帮助开发者识别并修正问题。例如: ``` javac -Xlint:unchecked YourFile.java ``` ...

    刺客2020:在家中玩:为检疫人员重新设计的刺客游戏

    如果初始执行失败,请尝试-Xlint:unchecked在编译选项中。游戏规则刺客的游戏方式如下。 玩家从一群想玩游戏的人开始。 例如,假设我们有五个人在玩,他们的名字分别是Joe,Sally,Jim,Carol和Chris。 建立了一个...

    java网络对战的国际象棋源码

    &lt;br&gt;一、用ant编译源码(所有源文件及目录结构请下载) &lt;br&gt;C:\cs&gt;ant compile Buildfile: build.xml &lt;br&gt;compile: [mkdir] Created dir: C:\cs\build [javac] Compiling 60 source files to C:\cs...

    JavaAnntation详解.doc

    要查看有关 `@SuppressWarnings` 的详细信息,可以在编译时使用 `-Xlint:unchecked` 参数。 #### 自定义注解 除了内置注解外,Java 还支持自定义注解,即开发者可以根据需要定义新的注解类型。 - **创建注解类型*...

    jdk7-64-linux.rar

    5. **新的编译器选项**:如"-Xlint:unchecked"和"-Xlint:deprecation",帮助开发者捕获未检查的类型转换和已弃用的API使用。 6. **NIO.2**:提供了一组新的文件系统API,增强了非阻塞I/O功能,例如异步文件通道和...

    rtl8188eu_r16m_20161208_服务器再次验证最终完成版本_20170531_1559没有外层目录.7z

    全志R16平台的android6.0.1系统下的RTL8188EU的配置V1.0 2017/5/31 10:30 1、R:\wyb\rtl8188eu_r16m_20161208\android\device\softwinner\astar-evb30\overlay\frameworks\base\core\...注: 某些输入文件使用或覆盖...

    java集合知识-map、set等

    注: 有关详细信息, 请使用 -Xlint:unchecked 重新编译。 f:\tang&gt;java HashSetTest Person@6236515 lisi9....29 Person@6236435 lisi1....21 Person@62364dd lisi7....27 Person@6236489 lisi4....24 */ 例子2-2 ...

    Java泛型的概念、定义与运行方法分析

    4. 如遇到错误提示,可以使用javac的-Xlint:unchecked参数重新编译,获取更详细的错误信息。 在上述过程中,如果使用了未经检查或不安全的操作,编译器会发出警告,并建议使用-Xlint:unchecked参数进行更详细的检查...

    jdk-7u80-windows-x64安装包

    4. **动态类型**:引入了`javac -Xlint:unchecked`选项,用于在编译期间检查泛型的未检查转换。 5. **Fork/Join框架**:这个并发库提供了并行执行任务的能力,尤其适用于分解大型任务为小任务的场合。 6. **NIO.2*...

    注解annotation的详细介绍

    在编译时,如果不使用`-Xlint:deprecation`选项,编译器会默认发出一般警告,使用该选项后,警告信息会更具体,提醒开发者该API已过时。 3. **@SuppressWarnings**: `@SuppressWarnings`注解用于抑制编译器的警告...

    java api7中文带索引chw版

    8. **改进的编译器**:Java 7的编译器(javac)进行了优化,提高了编译速度,同时增加了新的编译选项,如`-Xlint:unchecked`用于警告未检查的转换。 9. **改进的垃圾回收**:Java 7的垃圾回收机制有所优化,尤其是...

    Maven修改运行环境配置代码实例

    &lt;arg&gt;-Xlint:unchecked &lt;target&gt;1.8 &lt;source&gt;1.8 &lt;encoding&gt;UTF-8 这样,Maven就会使用JDK1.8作为编译环境。 3. Maven修改其他配置 Maven提供了丰富的配置选项,包括编译器配置、依赖项配置、资源配置等...

    Java动态编译执行代码示例

    ops.add("-Xlint:unchecked"); ops.add("-classpath"); ops.add(CLASS_PATH); //获取编译任务 JavaCompiler.CompilationTask task = compiler.getTask(null, manager, null, ops, null, it); //执行编译任务 task....

Global site tag (gtag.js) - Google Analytics