2015-01-13 25 views
0

我正在用asm庫檢測代碼並收到此類錯誤。這是什麼意思?有誰知道它是如何修復的? 請注意,我跳過接口在代理agentmain方法:java.lang.ClassFormatError:類文件中原生或抽象方法中的代碼屬性

if (clazz.isPrimitive() || clazz.isInterface() || clazz.isLocalClass() || clazz.isArray() || clazz.isAnonymousClass() || clazz.isMemberClass() || clazz.isPrimitive()) { 
    continue; 
} 

錯誤堆棧:

java.lang.ClassFormatError: Code attribute in native or abstract methods in class file com/mysql/jdbc/ConnectionProperties 
    java.lang.ClassLoader.defineClass1(Native Method) 
    java.lang.ClassLoader.defineClass(ClassLoader.java:800) 
    java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) 
    java.net.URLClassLoader.defineClass(URLClassLoader.java:449) 
    java.net.URLClassLoader.access$100(URLClassLoader.java:71) 
    java.net.URLClassLoader$1.run(URLClassLoader.java:361) 
    java.net.URLClassLoader$1.run(URLClassLoader.java:355) 
    java.security.AccessController.doPrivileged(Native Method) 
    java.net.URLClassLoader.findClass(URLClassLoader.java:354) 
    java.lang.ClassLoader.loadClass(ClassLoader.java:425) 
    java.lang.ClassLoader.loadClass(ClassLoader.java:358) 
    java.lang.ClassLoader.defineClass1(Native Method) 
    java.lang.ClassLoader.defineClass(ClassLoader.java:800) 
    java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) 
    java.net.URLClassLoader.defineClass(URLClassLoader.java:449) 
    java.net.URLClassLoader.access$100(URLClassLoader.java:71) 
    java.net.URLClassLoader$1.run(URLClassLoader.java:361) 
    java.net.URLClassLoader$1.run(URLClassLoader.java:355) 
    java.security.AccessController.doPrivileged(Native Method) 
    java.net.URLClassLoader.findClass(URLClassLoader.java:354) 
    java.lang.ClassLoader.loadClass(ClassLoader.java:425) 
    java.lang.ClassLoader.loadClass(ClassLoader.java:358) 
    java.lang.ClassLoader.defineClass1(Native Method) 
    java.lang.ClassLoader.defineClass(ClassLoader.java:800) 
    java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) 
    java.net.URLClassLoader.defineClass(URLClassLoader.java:449) 
    java.net.URLClassLoader.access$100(URLClassLoader.java:71) 
    java.net.URLClassLoader$1.run(URLClassLoader.java:361) 
    java.net.URLClassLoader$1.run(URLClassLoader.java:355) 
    java.security.AccessController.doPrivileged(Native Method) 
    java.net.URLClassLoader.findClass(URLClassLoader.java:354) 
    java.lang.ClassLoader.loadClass(ClassLoader.java:425) 
    java.lang.ClassLoader.loadClass(ClassLoader.java:358) 
    com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:282) 
    java.sql.DriverManager.getConnection(DriverManager.java:571) 
    java.sql.DriverManager.getConnection(DriverManager.java:215) 
    org.apache.jsp.welcome_jsp._jspService(welcome_jsp.java:92) 
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:723) 
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:388) 
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313) 
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:723) 

回答

0

這個問題就解決了。 我跳過了代理agentmain函數中的接口和抽象類的工具。但是它不適用於運行時加載的庫。因此,此檢查(如果類是接口)應在代理轉換方法內完成。我把那張支票移到那裏,現在它可以工作。

謝謝

相關問題