javax.servlet.ServletException:java.lang.UnsupportedClassVersionError:通过JSP访问类文件时.class文件中的错误版本号

时间:2014-05-26 05:25:32

标签: java jsp

如果包含在JSP中,下面的代码片段运行正常,但是当我尝试从类文件中引用相同的代码时,我得到“.class文件中的错误版本号”异常。

JARS使用:

  • UnlimitedJCEPolicyJDK6:local_policy.jar
  • 的US_export_policy.jar

解密的Java代码

 import java.security.Key;

        import javax.crypto.Cipher;
        import javax.crypto.spec.SecretKeySpec;

        import sun.misc.BASE64Decoder;
        import sun.misc.BASE64Encoder;

        public class Decrypt256bit {


        private static Key key;

        private static Cipher cipher;

        static {
            key = new SecretKeySpec("P@ssw0Rd!@#**&&&P@ssw0Rd!@#**&&&".getBytes(), "AES");
            try {
                cipher = Cipher.getInstance("AES/ECB/PKCS5PADDING","SunJCE");
            } catch (Exception e) {
                e.printStackTrace();
            }
        }

        public static String encryptData(String plainText) {
            try {
                cipher.init(Cipher.ENCRYPT_MODE, key);
                byte[] encrypted = cipher.doFinal(plainText.getBytes());
                return new BASE64Encoder().encode(encrypted);
            } catch (Exception e) {

                throw new IllegalArgumentException(e);
            }
        }


        //For testing purpose - to be deleted
        public static String decryptData(String encryptedValue) {
            try {
                cipher.init(Cipher.DECRYPT_MODE, key);
                byte[] decordedValue = new BASE64Decoder().decodeBuffer(encryptedValue);
                int maxKeyLen = Cipher.getMaxAllowedKeyLength("AES");
                System.out.println("Length==="+maxKeyLen);
                return new String(cipher.doFinal(decordedValue));
            } catch (Exception e) {
                throw new IllegalArgumentException(e);
            }
        }

        public static void main(String... a) {
            //String enc = encryptData("TPASU~TPAGU");
            //System.out.println("Encrypted text==="+enc);      
        }

        }

1 个答案:

答案 0 :(得分:0)

您已使用更高版本的Java编译源文件,并在仅支持较低版本的JRE中执行它们。请确保您已在运行时使用受支持的Java版本进行编译。

在JRE中运行不兼容的类文件时会出现此错误。 say你执行在Java 7中编译并在JRE 6中执行的.class文件。但是,反过来是完全有效的。您绝对可以运行在Java 6中编译的.class文件,并在JRE 7环境中执行。