gradle - gradle:带有OSGI/SCR插件的OSGI-INF文件夹的问题

标签 gradle osgi osgi-bundle

当我尝试生成包含OSGI-INF文件夹信息的OSGI bundle 包时,无法在gradle构建文件中使用apply plugin:'scr'创建该文件夹。请问是否有任何指针?

我正在使用Java 1.8。失败的任务是task ':processScrAnnotations'

我收到以下异常,该异常未提供有用的消息传递:

Caused by: java.lang.IllegalArgumentException
        at org.objectweb.asm.ClassReader.<init>(Unknown Source)
        at org.objectweb.asm.ClassReader.<init>(Unknown Source)
        at org.objectweb.asm.ClassReader.<init>(Unknown Source)
        at org.apache.felix.scrplugin.helper.ClassScanner.processClass(ClassScanner.java:172)
        at org.apache.felix.scrplugin.helper.ClassScanner.scanSources(ClassScanner.java:143)
        at org.apache.felix.scrplugin.SCRDescriptorGenerator.execute(SCRDescriptorGenerator.java:149)
        at org.apache.felix.scrplugin.ant.SCRDescriptorTask.execute(SCRDescriptorTask.java:129)
        at org.apache.felix.scrplugin.ant.SCRDescriptorTask$execute.call(Unknown Source)
        at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:45)
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108)
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:112)
        at com.twcable.gradle.scr.ScrPlugin.configureAction(ScrPlugin.groovy:77)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:497)
        at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90)
        at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:324)
        at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:382)
        at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1015)
        at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:806)
        at groovy.lang.GroovyObjectSupport.invokeMethod(GroovyObjectSupport.java:44)
        at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeOnDelegationObjects(ClosureMetaClass.java:444)
        at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:369)
        at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1015)
        at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.callCurrent(PogoMetaClassSite.java:66)
        at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:49)
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:133)
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:141)
        at com.twcable.gradle.scr.ScrPlugin$_addScrTask_closure1_closure4.doCall(ScrPlugin.groovy:59)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:497)
        at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90)
        at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:324)
        at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:292)
        at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1015)
        at groovy.lang.Closure.call(Closure.java:423)
        at groovy.lang.Closure.call(Closure.java:439)
        at org.gradle.api.internal.AbstractTask$ClosureTaskAction.execute(AbstractTask.java:554)
        at org.gradle.api.internal.AbstractTask$ClosureTaskAction.execute(AbstractTask.java:535)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:80)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:61)
        ... 68 more

最佳答案

您正在使用的gradle插件本身使用的是ASM的较旧版本,该版本不了解Java 8类文件。您需要gradle插件由作者进行更新,以使用确实能够理解Java 8类文件的ASM的最新版本。

关于gradle - gradle:带有OSGI/SCR插件的OSGI-INF文件夹的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32191506/

相关文章:

java - 如何在未启动框架的其他类中获取 BundleContext?

osgi - 从文件系统动态加载 OSGi 包

Gradle maven publish 生成具有重复属性的无效 POM

java - 使用gradle加载命令行属性但找不到方法execSpec()

java - 如何从 eclipse/osgi 应用程序中包含对 jar 文件的依赖?

java - 导出与其他包有依赖关系的包

eclipse - 使用 OSGi 自动安装几个包

gradle - 通过获取请求获取json并将响应保存在文件中

gradle - 如何从Gradle中检测当前的操作系统

java - (OSGi) 如何导出包以供我的 bundle 导入?