<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Java軟件報(bào)表軟件技術(shù)博客

    java報(bào)表軟件技術(shù)匯總 java報(bào)表軟件制作 報(bào)表軟件新聞
    posts - 355, comments - 100, trackbacks - 0, articles - 3
       :: 首頁 :: 新隨筆 ::  :: 聚合  :: 管理
     

    FineReport是一款國產(chǎn)的純Java報(bào)表軟件,其基本原理是通過ReportServer這樣一個(gè)Servlet來處理所有的報(bào)表請求,并動(dòng)態(tài)的生成基于Web2.0技術(shù)的HTML頁面。我們在最近一期的項(xiàng)目中采用了FineReport作為報(bào)表引擎,在Tomcat的環(huán)境中測試順利通過。

     

    當(dāng)我們把項(xiàng)目部署到WebSphere6.0.0.1上時(shí),問題開始頻繁出現(xiàn)。由于以前有過在WAS上部署項(xiàng)目的經(jīng)驗(yàn),這可能又是IBMJDK的問題。WAS6.0采用的是IBMJRE 1.4.2,由于IBMJRE的重新實(shí)現(xiàn),增加了更多的功能和更加嚴(yán)格的運(yùn)行時(shí)檢查,使得在SUN JDK下編譯的應(yīng)用程序,多多少少會(huì)出現(xiàn)一些問題。

     

    出現(xiàn)的第一個(gè)問題是:sun.io.malformedinputexception異常。Google上找到了一些解決方案:

    ·         http://www.tkk7.com/mlw2000/archive/2007/03/01/101282.aspx

    ·         http://blog.csdn.net/CharlesYY/archive/2006/11/10/1377774.aspx

    根據(jù)SytemErr.log給出的錯(cuò)誤信息,問題出在com/web/core/js/common.js上。和FineReport的老薛在QQ上討論了好久,也初步的認(rèn)定是common.js的編碼問題。事實(shí)上,從jar包里面提取出來的common.js文件,的確是DOS編碼,而不是IBM JRE要求的UTF-8。把該問題通過UltraEdit改為UTF-8編碼,然后更新jar包,問題解決。老薛也決定把所有的文件全部用UTF8重新編碼。

     

    問題二:ClassDefNotFound錯(cuò)誤。

    WAS的部署中,這是個(gè)最常見的問題,也是最讓人莫名其妙的問題。明明class就定義在路徑中,為什么說找不到?其實(shí),造成這個(gè)問題有很多種原因。

    1.        ClassLoader加載class的時(shí)候出現(xiàn)異常,以后再調(diào)用該class的時(shí)候就會(huì)出現(xiàn)ClassDefNotFound錯(cuò)誤;

    2.        ClassLoaderCLASS_PATH中找不到class的定義;

    3.        要加載的class處于當(dāng)前ClassLoader的子層次上。按照WAS類加載器的層次式設(shè)計(jì),低層的Class可以訪問高層的Class,反之不行。

    我們順著這個(gè)線索摸下去,很快就發(fā)現(xiàn)了問題的所在。第一個(gè)錯(cuò)誤是因?yàn)?/span>FineReportClass中調(diào)用某個(gè)XWindowAPI,由于某種原因調(diào)用失敗,從而導(dǎo)致后來的ClassDefNotFound錯(cuò)誤。第二個(gè)錯(cuò)誤是由于我把FineReportSpring等公共類全部都放到公共路徑/opt/lib下,并設(shè)置成WAS的共享庫。由于FineReport在運(yùn)行時(shí)需要調(diào)用Application的內(nèi)部類,從而根據(jù)3的原因錯(cuò)誤產(chǎn)生了。

    于是我和老薛又討論,得知FineReport中查找類的方法是Class.forName。如果把FineReport放在/WEB-INF/lib下,Class.forName調(diào)用的ClassLoader自然可以找到當(dāng)前上下文中的類。可是當(dāng)FineReport處在/opt/lib的較高層次的類路徑上時(shí),尋找下級的某個(gè)類,問題出現(xiàn)了。問題集中在一點(diǎn)上:如何在共享庫中找到應(yīng)用程序中類。

    我一直用Spring框架,Spring通過配置文件動(dòng)態(tài)的加載類,這種情況和我們現(xiàn)在遇到的問題完全相同。但Spring是如何解決的呢?看來得深入Spring的代碼好好研究研究了。

    文章轉(zhuǎn)自:http://blog.sina.com.cn/s/blog_44f68c96010008pi.html



    主站蜘蛛池模板: 最近免费中文字幕大全高清大全1| 亚洲熟妇无码AV| 亚洲高清国产拍精品26U| 久久亚洲国产精品123区| 亚洲福利视频一区二区| 亚洲成AⅤ人影院在线观看| 免费人成在线观看视频播放 | 亚洲一线产品二线产品| 亚洲国产视频一区| 亚洲一级毛片视频| 亚洲成人激情小说| 亚洲精品无码久久久久A片苍井空 亚洲精品无码久久久久YW | 久久不见久久见免费影院www日本| av成人免费电影| 中文字幕一区二区免费| 日本一卡精品视频免费| 日本免费网站视频www区| 无遮免费网站在线入口| 午夜a级成人免费毛片| 四虎永久成人免费| 亚洲中文字幕在线第六区| 久久精品九九亚洲精品天堂| 亚洲综合视频在线| 亚洲不卡1卡2卡三卡2021麻豆| 亚洲码和欧洲码一码二码三码| 理论秋霞在线看免费| 一个人看的www免费视频在线观看| 99re免费在线视频| 成人免费毛片内射美女APP| 四虎成人精品在永久免费| 久久亚洲中文字幕精品一区| 亚洲国产精品一区| 亚洲H在线播放在线观看H| 黄网站在线播放视频免费观看| 两个人看的www高清免费观看| 6080午夜一级毛片免费看| 免费高清资源黄网站在线观看| 亚洲人成无码网WWW| 亚洲精品在线不卡| 亚洲Av永久无码精品一区二区| 中文字幕在线观看免费|