0

我在 JAR 文件中成功构建了一个 OSGi 包(一个 Apache Sling Custom AuthenticationHandler)。当我将 bundle jar 安装到我的最终 OSGi 环境 (Felix) 并启动 bundle 时,我在日志中收到以下错误:

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)
    ...

可能出了什么问题?

4

2 回答 2

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)
于 2013-04-10T00:56:57.663 回答
0

这看起来像是一个损坏的 JAR 文件。VerifyError当类文件内部不一致或存在安全问题时由 JVM 抛出。

于 2013-03-02T22:51:24.097 回答