获取java.lang.VerifyError:在eclipse中启动tomcat 8服务器时,类waffle.apache.MixedAuthenticator会覆盖最终的方法启动。()V
我试图从eclipse启动Tomcat8服务器获取java.lang.VerifyError:在eclipse中启动tomcat 8服务器时,类waffle.apache.MixedAuthenticator会覆盖最终的方法启动。()V,java,Java,我试图从eclipse启动Tomcat8服务器 SEVERE: Begin event threw error java.lang.VerifyError: class waffle.apache.MixedAuthenticator overrides final method start.()V at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(C
SEVERE: Begin event threw error
java.lang.VerifyError: class waffle.apache.MixedAuthenticator overrides final method start.()V
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:760)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:467)
at java.net.URLClassLoader.access$100(URLClassLoader.java:73)
at java.net.URLClassLoader$1.run(URLClassLoader.java:368)
at java.net.URLClassLoader$1.run(URLClassLoader.java:362)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:361)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at org.apache.tomcat.util.digester.ObjectCreateRule.begin(ObjectCreateRule.java:116)
at org.apache.tomcat.util.digester.Digester.startElement(Digester.java:1178)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(AbstractSAXParser.java:509)
at com.sun.org.apache.xerces.internal.parsers.AbstractXMLDocumentParser.emptyElement(AbstractXMLDocumentParser.java:182)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanStartElement(XMLDocumentFragmentScannerImpl.java:1343)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2786)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:606)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:510)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:848)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:777)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1213)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:649)
at org.apache.tomcat.util.digester.Digester.parse(Digester.java:1451)
at org.apache.catalina.startup.Catalina.load(Catalina.java:551)
at org.apache.catalina.startup.Catalina.load(Catalina.java:599)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:310)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:484)
我已经在tomcat lib文件夹中复制了华夫格jna jar。我从系统中Tomcat6安装的lib文件夹复制了这个jar。这是版本问题吗?请帮我找出原因。验证错误的原因是您更改了新类的定义,但旧类是使用该类的旧版本编译的 为了避免验证错误,必须使用相同版本的Java编译所有类。此外,一旦对类进行了更改,请确保从头开始重新编译项目。最后,如果您的应用程序使用了外部库,请验证您是否使用了每个库的适当版本,当然,请查阅相应的javadocs,以确保所有内容都是正确的 需要检查您正在编译的类在应用程序的其他地方(可能在另一个jar中)的类路径中不存在吗
此外,需要通过stacktrace检查源文件(utf-8?)的字符编码是否正确?验证错误的原因是您更改了新类的定义,但旧类是使用旧版本的类编译的 为了避免验证错误,必须使用相同版本的Java编译所有类。此外,一旦对类进行了更改,请确保从头开始重新编译项目。最后,如果您的应用程序使用了外部库,请验证您是否使用了每个库的适当版本,当然,请查阅相应的javadocs,以确保所有内容都是正确的 需要检查您正在编译的类在应用程序的其他地方(可能在另一个jar中)的类路径中不存在吗
另外,需要通过stacktrace检查源文件(utf-8)的字符编码是否正确?是的,您有版本问题 验证器是JVM的一部分,它在类加载时对类运行正确性检查,其中一项检查是类不能重写最终方法 在这种情况下,
MixedAuthenticator
的某个超类定义了一个void start()
方法,该方法在编译MixedAuthenticator
所依据的版本中不是最终的,但在运行时的版本中是最终的。大概是更新了MixedAuthenticator
以不覆盖该方法,或者更新了超类以使该方法成为非最终方法。您需要匹配MixedAuthenticator
的版本以及此处出现问题的超类
请注意,像这样的问题是最好在项目中尽可能地打包库JAR而不是使用容器全局类路径的原因之一。是的,您有一个版本问题 验证器是JVM的一部分,它在类加载时对类运行正确性检查,其中一项检查是类不能重写最终方法 在这种情况下,
MixedAuthenticator
的某个超类定义了一个void start()
方法,该方法在编译MixedAuthenticator
所依据的版本中不是最终的,但在运行时的版本中是最终的。大概是更新了MixedAuthenticator
以不覆盖该方法,或者更新了超类以使该方法成为非最终方法。您需要匹配MixedAuthenticator
的版本以及此处出现问题的超类
请注意,类似这样的问题是最好尽可能将库JAR打包到项目中,而不是使用容器全局类路径的原因之一。使用try/catch包装错误源,以获取更多信息。是,这是一个版本问题。请使用try/catch包装错误源,以获取可能的更多信息。是的,这是一个版本问题。与Java版本无关。它是关于tomcat提供的catalina库版本,而不是Java版本。它是关于tomcat提供的catalina库版本的。