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

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

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

    posts - 42,comments - 83,trackbacks - 0
            這幾天碰到一個(gè)詭異的問題,在IBM JDK上二位數(shù)組中使用表達(dá)式時(shí),出現(xiàn)http 500的錯(cuò)誤。500是個(gè)內(nèi)部錯(cuò)誤,更web container有關(guān),拿了客戶的日志文件,發(fā)現(xiàn)異常如下,

    <2009-7-23 上午05時(shí)01分47秒 CDT> <Error> <HTTP> <BEA-101017> <[weblogic.servlet.internal.WebAppServletContext@1aec462 - appName: 'test', name: 'test', context-path: '/test', spec-version: '2.5'] Root cause of ServletException.
    javax.servlet.ServletException: [HTTP:101249][weblogic.servlet.internal.WebAppServletContext@1aec462 - appName: 'test', name: 'test', context-path: '/test', spec-version: '2.5']: Servlet class jsp_servlet.__test for servlet /test.jsp could not be loaded because the requested class was not found in the classpath .
    java.lang.ClassFormatError: Illegal class name "[L[Ljava/lang/String;;" in class file jsp_servlet/__test.
    ......

            從具體的異常堆棧來看,應(yīng)該是class加載時(shí)出現(xiàn)了問題,說是類名有問題,但同一context root下類名格式相同的其他page則可以訪問。如果去掉二位數(shù)組中的表達(dá)式,則可以解決這個(gè)問題。下面我們通過一個(gè)最簡(jiǎn)單的例子來復(fù)現(xiàn)這個(gè)問題。

    1:IBM JDK version

    E:\workspace\eclipse322\src1030\bin>java -version
    java version "1.6.0"
    Java(TM) SE Runtime Environment (build pwi3260sr2-20080818_01(SR2))
    IBM J9 VM (build 2.4, J2RE 1.6.0 IBM J9 2.4 Windows XP x86-32 jvmwi3260-20080816
    _22093 (JIT enabled, AOT enabled)
    J9VM - 20080816_022093_lHdSMr
    JIT  - r9_20080721_1330ifx2
    GC   - 20080724_AA)
    JCL  - 20080808_02

    2: __MatrixTest.java

     1 package test.classload;
     2 
     3 public class __MatrixTest {
     4     public void initialize(){
     5         String sResourcesPath = "";
     6         String sCustomerScale = "123";
     7         String sCustomerType = "123";
     8         String teststr=((!sCustomerScale.equals("")&&sCustomerScale.substring(0,2).equals("02"))?"false":"true");
     9         String sButtons[][] = {    
    10             {((!sCustomerScale.equals("")&&sCustomerScale.substring(0,2).equals("02"))?"false":"true"),
    11                 "","Button","新增","新增一條記錄","newRecord()",sResourcesPath},
    12             //If above expression is replaced with 'teststr' like below, this issue could be solved.    
    13             //{teststr,"","Button","新增","新增一條記錄","newRecord()",sResourcesPath}
    14         };
    15     }
    16 }

    3: LoaderTest.java
     1 package test.classload;
     2 
     3 public class LoaderTest {
     4     
     5     public static void main(String args[]){
     6         try{    
     7             Class clazz = Class.forName("test.classload.__MatrixTest");
     8             __MatrixTest test = (__MatrixTest)clazz.newInstance();
     9             
    10             System.out.println("class is loaded");
    11         }catch(Exception e){
    12             e.printStackTrace();
    13         }
    14         
    15     }
    16 }

    4: 運(yùn)行結(jié)果
        這個(gè)程序在Sun JDK及BEA JRockit上運(yùn)行的話,都沒有問題。而在IBM JDK1.6上運(yùn)行的話,會(huì)出現(xiàn)如下的如下的異常,
    E:\workspace\eclipse322\src1030\bin>java test.classload.LoaderTest
    Exception in thread "main" java.lang.ClassFormatError: JVMCFRE068 類名無效;類=test/classload/__MatrixTest,偏移量=0
            at java.lang.ClassLoader.defineClassImpl(Native Method)
            at java.lang.ClassLoader.defineClass(ClassLoader.java:265)
            at java.security.SecureClassLoader.defineClass(Unknown Source)
            at java.net.URLClassLoader.defineClass(URLClassLoader.java:493)
            at java.net.URLClassLoader.access$300(URLClassLoader.java:64)
            at java.net.URLClassLoader$ClassFinder.run(URLClassLoader.java:892)
            at java.security.AccessController.doPrivileged(AccessController.java:284
    )
            at java.net.URLClassLoader.findClass(URLClassLoader.java:414)
            at java.lang.ClassLoader.loadClass(ClassLoader.java:643)
            at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:300)
            at java.lang.ClassLoader.loadClass(ClassLoader.java:609)
            at java.lang.Class.forNameImpl(Native Method)
            at java.lang.Class.forName(Class.java:136)
            at test.classload.LoaderTest.main(LoaderTest.java:22)

            這應(yīng)該是JDK本身的問題,不知道二維數(shù)組中表達(dá)式怎么會(huì)引發(fā)類名解析問題。目前我所知道的解決辦法只是把數(shù)組中的表達(dá)式挪到數(shù)組定義外面,就像__MaxtrixTest中所說的一樣。
    posted on 2009-07-27 14:15 走走停停又三年 閱讀(4099) 評(píng)論(0)  編輯  收藏 所屬分類: Java Technology
    主站蜘蛛池模板: 国产免费人视频在线观看免费| 亚洲精品乱码久久久久久蜜桃 | 色影音免费色资源| 中文字幕在线观看亚洲日韩| 日韩特黄特色大片免费视频| 中文字幕免费观看视频| 亚洲最大视频网站| 又大又粗又爽a级毛片免费看| 中文无码日韩欧免费视频| 亚洲一区二区三区久久| 亚洲精品99久久久久中文字幕| 91高清免费国产自产拍2021| 亚洲JIZZJIZZ妇女| 久久国产精品亚洲综合| 无码国模国产在线观看免费| 无码精品一区二区三区免费视频| 亚洲精品美女久久久久久久| 国产AV无码专区亚洲AV毛网站| 国内大片在线免费看| 国产精品区免费视频| 国产亚洲精品欧洲在线观看| 亚洲首页在线观看| 亚洲午夜未满十八勿入网站2| 毛片免费观看的视频| 毛片无码免费无码播放| 男人免费视频一区二区在线观看| 亚洲另类春色校园小说| 亚洲国产无套无码av电影| 国内一级一级毛片a免费| **毛片免费观看久久精品| 国产精品成人免费观看| 亚洲youwu永久无码精品| 亚洲天天在线日亚洲洲精| 精品国产香蕉伊思人在线在线亚洲一区二区 | 久久亚洲中文字幕无码| 亚洲免费一级视频| 久久亚洲精品成人综合| 亚洲精品无码永久在线观看| 香蕉高清免费永久在线视频| 69成人免费视频| 免费人妻无码不卡中文字幕系|