NullPointerException เมื่อใช้ DatatypeConverter.parseHexBinary() [ซ้ำกัน]

กำลังใช้วิธี parseHexBinary ของ javax.xml.bind.DatatypeConverter แต่มันทำให้ฉัน

java.lang.NullPointerException
        at javax.xml.bind.DatatypeConverter.parseHexBinary(DatatypeConverter.java:310)
        at Test.main(Test.java:12)

เมื่อฉันใช้กับ Java เวอร์ชัน 1.6.0_01 แต่ทำงานได้ดีกับ Java v1.6.0.05 ใน Eclipse

มีวิธีอื่นใดที่ฉันสามารถทำได้ใน v1.6.0_01 หรือไม่ ไม่อย่างนั้นฉันจะต้องอัพเกรด

import java.nio.charset.Charset;

public class Test{

   public static void main(String[] args) {

      try {
          String str1 = "F3F0";
          Charset charset = Charset.forName("Cp037");
          String s;

               byte b[] = javax.xml.bind.DatatypeConverter.parseHexBinary(str1);
               s = new String(b,charset); //cbuf.toString();
               System.out.println("String is: " + s);

      } catch (Exception e) {
          e.printStackTrace();
      }
   }    
}

person AmitN    schedule 08.05.2013    source แหล่งที่มา
comment
@Duncan Jones เพิ่มรหัส .. หวังว่าจะไม่มีปัญหาใด ๆ ใช่ไหม   -  person AmitN    schedule 08.05.2013
comment
ดูดีสำหรับฉัน - ไม่เห็นสาเหตุที่ทำให้เกิด NPE ใน parseHexBinary   -  person Duncan Jones    schedule 08.05.2013
comment
อาจเป็นข้อบกพร่องในเวอร์ชัน 1.6.0_01 Java - พบ stackoverflow.com/questions/12498256/   -  person AmitN    schedule 10.05.2013


คำตอบ (1)


คุณสามารถสร้าง func แบบกำหนดเองได้เช่นนี้

byte[] parseHex(String str) {
    byte[] a = new BigInteger(str, 16).toByteArray();
    if (a.length != str.length() / 2) {
        a = Arrays.copyOfRange(a, 1, a.length);
    }
    return a;
}
person Evgeniy Dorofeev    schedule 08.05.2013
comment
ใช่ มันได้ผล... ขอบคุณ... - person AmitN; 09.05.2013