熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java開源技術 >> 正文

Eclipse使用中報錯的分析

2013-11-23 20:26:03  來源: Java開源技術 

  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] 警告
   
    呵呵答案是豐富多彩的條條大道通羅馬這次不僅解決了問題還找到了四種解決問題的方法


From:http://tw.wingwit.com/Article/program/Java/ky/201311/28486.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.