在启动OSGi包期间遇到“期望堆栈映射帧”错误

时间:2013-03-02 00:32:33

标签: osgi

我有一个成功构建到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)
    ...

可能出现什么问题?

2 个答案:

答案 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)