这是一个异常信息..com.borland.primetime.util.AssertionException: gbk

解决方案 »

  1.   

    我的服务其是weblogic7,工具是jb8
      

  2.   

    这个应该可以帮你解释,如果找不到补丁,请留下EMAIL,我发给你....
    http://expert.csdn.net/Expert/topic/2271/2271548.xml?temp=.4103205
      

  3.   

    我告诉,你这个问题,是jb8的问题,你需要给jb8打一个补丁,
    你到网上可以搜索一下,
    还有建议用jb9,jb8有很多的问题。
      

  4.   

    JB8一个jsp文件编写、保存BUG的原因及修改发布日期:2003-1-9  发 布 者:51jsp.net   
     
        在JB8中编写、保存的jsp文件的时候通常会出现这种错误(在状态栏中提示)
    com.borland.primetime.util.AssertionException: gbk
    而并不能正确保存jsp文件。个人修改办法如下:这个问题我在用JB8编写jsp文件时候发现的,现在本人已基本解决(但是改动了jdk类库里一些代码)首先我解析一下原因:JB8这个问题只出现在jsp文件中,而java代码则没有问题
    我们用JB(所有JB8以前的版本)编写程序的时候,项目的编码(Encoding)应该是GBK(注意是大写)
    这样我们编写Java代码的时候用的就是GBK,在JB8以前版本中,java文件和jsp文件的用的都是项目编码(如:GBK),因此所有文件都用GBK编写到了JB8就把java文件和jsp文件分开了,java继续用项目的编码,而jsp则根据jsp文件头的
    <%@ page contentType="text/html;charset=[encoding]"%>
    中[encoding](如GBK、gb2312)来读取、编写和写入文件,如果没写明则用ISO-8859-1(这个编码的写法也有问题,后面会有说明修改的方法),但这里用GBK编写代码的时候则JB8莫名其妙的把GBK改为小写gbk(borland程序员写错还是其他原因?!谁知道!),而在jdk类库中并没有这中编码(java是区分大小写的),因此就出现以上的错误:
    com.borland.primetime.util.AssertionException: gbk解决方法:
    在用我的修改方法前,大家错好能找些关于java字符集(支持的编码)的资料(论坛精华区有资料)
    我这里修改的jdk的类库,并不修改JB8的代码(JB8太庞大,找起来不好找)
    在jdk类库中负责编码别名转换类是sun.io.CharacterEncoding(在rt.jar包中,jdk目录是jdk1.4\jre\lib)这解析一下别名,
    java中支持的编码比较多,如:ISO8859_1,gb2312,GBK等,而java是区分大小写的,如果我把ISO8859_1写成iso8859_1,java会出错的,就像JB8把GBK写成gbk就出错了,那java错了一些容错处理,当他读到某些并不是自己支持的编码是就会去找sun.io.CharacterEncoding,看看这里有没有对应的编码转换,如果有则转成标准的编码,这里我们这些写得并不标准得编码成为编码得别名,而编码得别名可能会有很多(这个跟操作系统有关,如ISO8859_1就有很多中写法:iso_8859-1,iso8859_1)
    别名具体的英文名字解析我不记得了,我自己按自己的理解把它叫做别名接着我简要说明一下sun.io.CharacterEncoding是怎样实现别名的转换
    说起来很简单,就是用一个HashMap做key与value的对应表
    sun.io.CharacterEncoding部分编码如下(用jad反编译出来的)
            ((HashMap) (obj)).put("us-ascii", "ASCII");
            ((HashMap) (obj)).put("ascii", "ASCII");
            ((HashMap) (obj)).put("646", "ASCII");
            ((HashMap) (obj)).put("iso_646.irv:1983", "ASCII");
            ((HashMap) (obj)).put("ansi_x3.4-1968", "ASCII");
            ((HashMap) (obj)).put("iso646-us", "ASCII");
            ((HashMap) (obj)).put("default", "ASCII");
            ((HashMap) (obj)).put("ascii7", "ASCII");
            ((HashMap) (obj)).put("8859_1", "ISO8859_1");
            ((HashMap) (obj)).put("iso_8859-1:1987", "ISO8859_1");
            ((HashMap) (obj)).put("iso-ir-100", "ISO8859_1");
            ((HashMap) (obj)).put("iso_8859-1", "ISO8859_1");
            ((HashMap) (obj)).put("iso-8859-1", "ISO8859_1");
            ((HashMap) (obj)).put("iso8859-1", "ISO8859_1");
    。。这个对应表比较大,但找起来并不困难
    对照前面jb8的问题,我们很容易就找到原因所在,这个对应表中并没有gbk和GBK的对应!!!!
    那我们就知道如何解决了,自己加!!!
    ((HashMap) (obj)).put("gbk", "GBK");
    (【现在不知道有没有记错】后来我同时发现JB8也写错了一个编码ISO-8859_1,这个在对应表中也没有,所以建议大家也加上:
    ((HashMap) (obj)).put("ISO_8859-1", "ISO8859_1");

    然后编译自己sun.io.CharacterEncoding,然后加到JB8的jdk1.4的rt.jar包中即可
    (怎样操作请参考jar.exe的说明,在命令窗口运行jar就有帮助)
    以后JB8就不会出错了!哈哈 :)如果对本人理解不认同或有更好的解决方法请指出,欢迎讨论。
      

  5.   

    出现这样的错误,出错信息:
    com.borland.primetime.util.AssertionException: gbk
    有人在csdn上这么说:
    在网上搜索了好久,终于找到的补丁的下载,并上传到我的主页空间上面。
    下载地址:http://beming.myetang.com/soft/patch.rar转载:
    com.borland.primetime.util.AssertionException: gbk
    看到这个错误时,我就知道了大概的原因,只是前一段时间忙于别的事情,没时间作patch.
    出错的原因很简单,gbk应该是大写的才不会出错,肯定是JBuilder内部什么地方把"gbk"作为编码用了,所以出了java.io.UnsupportedEncodingException
    反编译部分代码后发现:com.borland.primetime.util.CharToByteJava中的一行:
    a=sun.io.CharToByteConverter.getConverter(s);
    运行时s="gbk".
    所以就出了java.io.UnsupportedEncodingException修正也很简单,把jb8_encoding_fix.jar放到C:\Jbuilder8\patch下,重新启动Jbuilder8,就可以跟那个问题说永别了。