调试java.lang.VerifyError

调试java.lang.VerifyError,java,debugging,Java,Debugging,我得到一个java.lang.VerifyError,在oracle的页面上,它说它是因为不一致或安全问题而抛出的。但这可能是一个可怕的事情,我甚至不知道我在找什么或在哪一类我应该找 错误消息也没有说明问题: java.lang.VerifyError: (class: proto/lua/libraries/ProtoLib$Lib1, method: call signature: ()Lproto/lua/LuaValue;) Wrong return type in function

我得到一个java.lang.VerifyError,在oracle的页面上,它说它是因为不一致或安全问题而抛出的。但这可能是一个可怕的事情,我甚至不知道我在找什么或在哪一类我应该找

错误消息也没有说明问题:

java.lang.VerifyError: (class: proto/lua/libraries/ProtoLib$Lib1, method: call signature: ()Lproto/lua/LuaValue;) Wrong return type in function
我应该注意哪些不一致之处?根据这个错误,有人能告诉我应该在哪个班级吗

关于这些例外情况的任何一般性帮助/信息也将不胜感激

编辑:我重写了Lua库的大部分内容,直到我发现这个错误在各个方面都很好地工作,我使用JavaSE6更新26

编辑:整个错误:

java.lang.VerifyError: (class: proto/lua/libraries/ProtoLib$Lib1, method: call signature: ()Lproto/lua/LuaValue;) Wrong return type in function
    at java.lang.Class.getDeclaredConstructors0(Native Method)
    at java.lang.Class.privateGetDeclaredConstructors(Class.java:2389)
    at java.lang.Class.getConstructor0(Class.java:2699)
    at java.lang.Class.newInstance0(Class.java:326)
    at java.lang.Class.newInstance(Class.java:308)
    at proto.lua.libraries.LibFunction.bind(LibFunction.java:169)
    at proto.lua.libraries.LibFunction.bind(LibFunction.java:152)
    at proto.lua.libraries.ProtoLib.call(ProtoLib.java:26)
    at proto.lua.otherstuff.OneArgFunction.call(OneArgFunction.java:66)
    at proto.lua.LuaValue.load(LuaValue.java:1358)
    at proto.lua.RavenLua.standardGlobals(RavenLua.java:100)
    at proto.ProjectPROTO.<clinit>(ProjectPROTO.java:51)
Could not find the main class: proto.ProjectPROTO.  Program will exit.
Exception in thread "main" Java Result: 1
java.lang.VerifyError:(类:proto/lua/libraries/ProtoLib$Lib1,方法:调用签名:()Lproto/lua/LuaValue;)函数中的返回类型错误
位于java.lang.Class.getDeclaredConstructors0(本机方法)
位于java.lang.Class.privateGetDeclaredConstructors(Class.java:2389)
位于java.lang.Class.getConstructor0(Class.java:2699)
位于java.lang.Class.newInstance0(Class.java:326)
位于java.lang.Class.newInstance(Class.java:308)
位于proto.lua.libraries.LibFunction.bind(LibFunction.java:169)
位于proto.lua.libraries.LibFunction.bind(LibFunction.java:152)
位于proto.lua.libraries.ProtoLib.call(ProtoLib.java:26)
位于proto.lua.otherstuff.OneArgFunction.call(OneArgFunction.java:66)
加载(LuaValue.java:1358)
位于proto.lua.RavenLua.standardGlobals(RavenLua.java:100)
在proto.ProjectPROTO.(ProjectPROTO.java:51)
找不到主类:proto.ProjectPROTO。程序将退出。
线程“main”Java结果中出现异常:1
所有proto.xxx.xxx.xxx类都是源代码的一部分


编辑:很显然,错误是由于我忘记了一些@Override注释而引起的,但不知道是什么原因导致它们开始出现错误。

java.lang的最大来源。验证错误是您的依赖库和主应用程序之间的JVM版本不兼容。因此,如果您使用Java5运行应用程序,并且依赖库是使用Java6编译的,那么您可能会遇到问题。我将开始研究使用什么版本的Java来编译Protolib版本?根据@Perception的回答,您正在使用。

,但我要补充:


最常见的原因是运行时环境使用与编译环境不同的(较旧的)JVM版本。

什么是完整堆栈跟踪?它应该显示哪个类正在调用该方法。可能原因是代码是针对编译它所依据的库的不同版本执行的,并且这些库版本之间存在一些不兼容的更改(从错误消息来看,它似乎是不同的方法返回类型)


如果该错误与任何库无关,而是与您自己的代码有关,那么请执行干净的构建。编译器应该生成一个关于所有可能在运行时导致验证错误的内容的编译错误。或者,如果源代码正确,它应该正确地重建所有类文件。

您使用的是哪个JVM和版本?如果您从某处下载了LuaJar,您是否检查过它是否已损坏?引发此错误的代码是什么?您所说的类未编译是什么意思?proto/lua/*类是这个项目的一部分吗,作为源代码而不是库?@Kal,这是一个相当大的类,因为我怀疑问题在于层次结构。如果没有编译protolib,我只能发布构造函数,我使用的每个编译库都工作了半个小时ago@Dasdasd-等等,你是说你的申请没有任何改变,然后在你发布问题前半小时停止工作?该窗口中一定发生了一些变化,您是否可以扩展您的原始问题,以包括它可能是什么?基本上,我正在尝试合并我的一些工作类,使它们扩展一个类(“LuaUserdata”),而不是创建一个新类并将其自身附加到它。这对4个类中的3个有效,最后一个“Part”让我头疼。在转换类时,您使用过字节码操作吗?另外,您的原型库是否依赖于项目中没有作为源代码出现的任何外部库?奇怪的是,我在代码中没有使用编译库,我怀疑错误是由这些库引起的干净构建没有帮助,但不知何故,想到“清理”让我检查了所有失败的类,我注意到有些类重写方法时没有@Override注释,出于习惯,我修复了它,只是为了见鬼,我再次运行了代码,现在VerifyError消失了。不知道发生了什么,谢谢!