org.apache.sling.api.scripting.SlingScriptHelper.getService(Class <servicetype>)何时返回null? VerifyError:期望一个stackmap frame </servicetype>

时间:2014-09-22 14:46:09

标签: java service osgi cq5 sling

根据此文档链接:

apidocs

如果service不是availibale,则SlingScriptHelper.getService返回null。

您能否解释服务不可用的情况以及如何强制服务?

编辑:

组件视图: enter image description here

相关日志:

22.09.2014 19:13:17.077 *ERROR* [FelixStartLevel] ****** bind method [bindResolverFactory] not found; Component will fail
22.09.2014 19:13:17.078 *ERROR* [FelixStartLevel] ****** Error during instantiation of the implementation object (java.lang.VerifyError: Expecting a stackmap frame at branch target 13
Exception Details:
  Location:
    *******.unbindConfigurator(L********Configurator;)V @5: if_acmpne
  Reason:
    Expected stackmap frame at this location.
  Bytecode:
    0000000: 2ab4 0086 2ba6 0008 2a01 b500 86b1     
) java.lang.VerifyError: Expecting a stackmap frame at branch target 13
Exception Details:
  Location:
    *****.unbindConfigurator(L*****;)V @5: if_acmpne
  Reason:
    Expected stackmap frame at this location.
  Bytecode:
    0000000: 2ab4 0086 2ba6 0008 2a01 b500 86b1     

2 个答案:

答案 0 :(得分:0)

我看到一些服务可能无法使用的原因:

  1. 未部署实现服务接口的Bundle
  2. 已部署Bundle但无法启动(通常缺少某些依赖项)
  3. 无法启动Component,因为activate方法引发了异常
  4. 您可以在OSGi控制台中查看123您需要检查日志。要修复它,1很明显,请安装捆绑包。对于2,您需要检查无法解析的依赖项,然后您需要检查导出依赖项的bundle是否正在运行。对于3,它可能是代码中的问题或无效配置或引用的服务不可用,这可能是以下三个原因中的任何一个。

答案 1 :(得分:0)

它看起来像java兼容性问题。 Java 7为类文件引入了新的验证。如果该方法是在运行时通过字节码生成的,如果字节码版本不匹配则可能导致问题。

你在运行哪个版本的cq?你编译的是哪个版本的java?您可以尝试使用java 6目标进行编译。