I'm trying to use cssparser in my project. Unfortunately when using Java 7 I
get the following exception:
Error Message
Invalid method Code length 66878 in class file
com/steadystate/css/parser/SACParserCSS21TokenManager
Stacktrace
java.lang.ClassFormatError: Invalid method Code length 66878 in class file
com/steadystate/css/parser/SACParserCSS21TokenManager
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:791)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
at java.lang.Class.getDeclaredConstructors0(Native Method)
at java.lang.Class.privateGetDeclaredConstructors(Class.java:2404)
at java.lang.Class.getConstructor0(Class.java:2714)
at java.lang.Class.newInstance0(Class.java:343)
at java.lang.Class.newInstance(Class.java:325)
The class has a very long switch statement (700+ case-es).
Due to jvm specification a class may not exceed 64KB when loaded therefore
the classloader fails. It would be good if the class could be split into
smaller pieces of code that do not break the jvm limitations.
Regards
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hello,
I'm trying to use cssparser in my project. Unfortunately when using Java 7 I
get the following exception:
Error Message
Invalid method Code length 66878 in class file
com/steadystate/css/parser/SACParserCSS21TokenManager
Stacktrace
java.lang.ClassFormatError: Invalid method Code length 66878 in class file
com/steadystate/css/parser/SACParserCSS21TokenManager
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:791)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
at java.lang.Class.getDeclaredConstructors0(Native Method)
at java.lang.Class.privateGetDeclaredConstructors(Class.java:2404)
at java.lang.Class.getConstructor0(Class.java:2714)
at java.lang.Class.newInstance0(Class.java:343)
at java.lang.Class.newInstance(Class.java:325)
The class has a very long switch statement (700+ case-es).
Due to jvm specification a class may not exceed 64KB when loaded therefore
the classloader fails. It would be good if the class could be split into
smaller pieces of code that do not break the jvm limitations.
Regards