From: chiba Date: Mon, 13 Aug 2007 09:06:31 +0000 (+0000) Subject: the default major version of newly-created class files is either JDK 1.3 or 1.5,... X-Git-Tag: rel_3_17_1_ga~238 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=2f7efd86200e7f76130224a76259c1a747c87c5c;p=javassist.git the default major version of newly-created class files is either JDK 1.3 or 1.5, which depends on the VM version. git-svn-id: http://anonsvn.jboss.org/repos/javassist/trunk@402 30ef5769-5b8d-40dd-aea6-55b5d6557bb3 --- diff --git a/src/main/javassist/bytecode/ClassFile.java b/src/main/javassist/bytecode/ClassFile.java index 4720d289..c087073c 100644 --- a/src/main/javassist/bytecode/ClassFile.java +++ b/src/main/javassist/bytecode/ClassFile.java @@ -65,9 +65,18 @@ public final class ClassFile { /** * The major version number of class files created - * from scratch. The value is 47 (JDK 1.3). + * from scratch. The default value is 47 (JDK 1.3) + * or 49 (JDK 1.5) if the JVM supports java.lang.StringBuilder. */ - public static final int MAJOR_VERSION = JAVA_3; + public static int MAJOR_VERSION = JAVA_3; + + static { + try { + Class.forName("java.lang.StringBuilder"); + MAJOR_VERSION = JAVA_5; + } + catch (Throwable t) {} + } /** * Constructs a class file from a byte stream. diff --git a/src/main/javassist/bytecode/LocalVariableAttribute.java b/src/main/javassist/bytecode/LocalVariableAttribute.java index f1eb203c..54929137 100644 --- a/src/main/javassist/bytecode/LocalVariableAttribute.java +++ b/src/main/javassist/bytecode/LocalVariableAttribute.java @@ -260,8 +260,11 @@ public class LocalVariableAttribute extends AttributeInfo { ByteArray.write16bit(name, dest, j + 4); - if (type != 0) - type = cp.copy(type, newCp, null); + if (type != 0) { + String sig = cp.getUtf8Info(type); + sig = Descriptor.rename(sig, classnames); + type = newCp.addUtf8Info(sig); + } ByteArray.write16bit(type, dest, j + 6); ByteArray.write16bit(index, dest, j + 8);