Weblogic10在AIX无法建域:UnsupportedClassVersionError


今天在AIX上使用Weblogic的config.sh脚本创建域时出现了如下错误:

[uathzapp@bea]$ ./config.sh
Exception in thread "main" java.lang.UnsupportedClassVersionError: (weblogic/descriptor/SettableBean) bad major version at offset=6
        at java.lang.ClassLoader.defineClassImpl(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:267)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:151)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:600)
        at java.net.URLClassLoader.access$400(URLClassLoader.java:124)
        at java.net.URLClassLoader$ClassFinder.run(URLClassLoader.java:1055)
        at java.security.AccessController.doPrivileged(AccessController.java:274)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:492)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:640)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:606)
        at java.lang.ClassLoader.defineClassImpl(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:267)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:151)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:600)
        at java.net.URLClassLoader.access$400(URLClassLoader.java:124)
        at java.net.URLClassLoader$ClassFinder.run(URLClassLoader.java:1055)
        at java.security.AccessController.doPrivileged(AccessController.java:274)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:492)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:640)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:606)
        at java.lang.ClassLoader.defineClassImpl(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:267)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:151)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:600)
        at java.net.URLClassLoader.access$400(URLClassLoader.java:124)
        at java.net.URLClassLoader$ClassFinder.run(URLClassLoader.java:1055)
        at java.security.AccessController.doPrivileged(AccessController.java:274)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:492)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:640)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:606)
        at java.lang.ClassLoader.defineClassImpl(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:267)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:151)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:600)
        at java.net.URLClassLoader.access$400(URLClassLoader.java:124)
        at java.net.URLClassLoader$ClassFinder.run(URLClassLoader.java:1055)
        at java.security.AccessController.doPrivileged(AccessController.java:274)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:492)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:640)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:606)
        at java.lang.ClassLoader.defineClassImpl(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:267)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:151)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:600)
        at java.net.URLClassLoader.access$400(URLClassLoader.java:124)
        at java.net.URLClassLoader$ClassFinder.run(URLClassLoader.java:1055)
        at java.security.AccessController.doPrivileged(AccessController.java:274)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:492)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:640)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:606)
        at java.lang.ClassLoader.defineClassImpl(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:267)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:151)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:600)
        at java.net.URLClassLoader.access$400(URLClassLoader.java:124)
        at java.net.URLClassLoader$ClassFinder.run(URLClassLoader.java:1055)
        at java.security.AccessController.doPrivileged(AccessController.java:274)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:492)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:640)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:606)
        at java.lang.J9VMInternals.verifyImpl(Native Method)
        at java.lang.J9VMInternals.verify(J9VMInternals.java:69)
        at java.lang.J9VMInternals.initialize(J9VMInternals.java:131)
        at weblogic.xml.jaxp.RegistryDocumentBuilderFactory.<clinit>(RegistryDocumentBuilderFactory.java:28)
        at java.lang.J9VMInternals.initializeImpl(Native Method)
        at java.lang.J9VMInternals.initialize(J9VMInternals.java:196)
        at java.lang.Class.newInstanceImpl(Native Method)
        at java.lang.Class.newInstance(Class.java:1328)
        at javax.xml.parsers.FactoryFinder.newInstance(Unknown Source)
        at javax.xml.parsers.FactoryFinder.findJarServiceProvider(Unknown Source)
        at javax.xml.parsers.FactoryFinder.find(Unknown Source)
        at javax.xml.parsers.DocumentBuilderFactory.newInstance(Unknown Source)
        at com.Oracle.cie.wizard.WizardDefinitionParser.<init>(WizardDefinitionParser.java:149)
        at com.oracle.cie.wizard.WizardController.transferControl(WizardController.java:789)
        at com.oracle.cie.wizard.WizardController.<init>(WizardController.java:281)
        at com.oracle.cie.wizard.WizardHelper.invokeWizard(WizardHelper.java:160)
        at com.oracle.cie.wizard.WizardHelper.invokeWizardAndWait(WizardHelper.java:41)
        at com.oracle.cie.wizard.WizardController.main(WizardController.java:883)


通过错误信息比较容易判断,其实这就是安装时使用的JAVA版本不正确所至,Weblogic1034对JDK的要求是1.6以上,而这台服务器的WLS安装时使用的JDK版本是1.5的,在commEnv.sh脚本里面可以看得到:

# and JAVA_VENDOR are pre-defined.
if [ -z "${JAVA_HOME}" -o -z "${JAVA_VENDOR}" ]; then
  # Set up JAVA HOME
  JAVA_HOME="/usr/java5_64"
  # Set up JAVA VENDOR, possible values are
  #Oracle, HP, IBM, Sun ...
  JAVA_VENDOR=Unknown
  # PRODUCTION_MODE, default to the development mode
  PRODUCTION_MODE=""
fi

因此现在使用时虽然用户环境指定的JAVA版本是1.6的,但是安装生成的文件都是使用1.5编译的,所以会出现这个问题!

冒失只需要把commEnv.sh脚本里面的JAVA_HOME设置为1.6的JDK就可以了,但是为了保险还是重装了。

相关内容