我有一个成功构建到JAR文件中的OSGi包(Apache Sling Custom AuthenticationHandler)。当我将捆绑jar安装到我的最终OSGi环境(Felix)并启动捆绑包时,我在日志中收到以下错误:
Error: Expecting a stackmap frame at branch target 13 in method com.fl.safe.authhandler.SafeAuthenticationHandler.unbindRepository(Lorg/apache/sling/jcr/api/SlingRepository;)V at offset 5) java.lang.VerifyError: Expecting a stackmap frame at branch target 13 in method com.fl.safe.authhandler.SafeAuthenticationHandler.unbindRepository(Lorg/apache/sling/jcr/api/SlingRepository;)V at offset 5
at java.lang.Class.getDeclaredConstructors0(Native Method)
at java.lang.Class.privateGetDeclaredConstructors(Class.java:2413)
at java.lang.Class.getConstructor0(Class.java:2723)
at java.lang.Class.newInstance0(Class.java:345)
at java.lang.Class.newInstance(Class.java:327)
...
可能出现什么问题?
答案 0 :(得分:0)
这看起来像一个损坏的JAR文件。当类文件内部不一致或存在安全问题时,JVM会抛出VerifyError
。
答案 1 :(得分:0)
事实证明,Bundle是使用Java 1.6编译的,并且部署到Java 1.7的OSGi容器环境中导致了特定的错误。对于那些可能遇到同样问题的人,可以file
命令找出用于编译和生成.class文件的java版本。例如,
% file XQueryUtil.class
XQueryUtil.class: compiled Java class data, version 49.0 (Java 1.5)