2013-06-03 4 views
0

나는 scribe-java를 통합하려고하고 Jenkins Plugin을 작성하고 있지만 Jenkins를 Class와 함께 사용할 수없는 것 같습니다. 아무도 왜이 일을 알고 있습니까?Jenkins Class를 사용하는 데 문제가있는 플러그인?

젠킨스 플러그인 코드 :

OAuthService service = 
      new ServiceBuilder().provider(com.lookout.jenkins.publishoverbox.BoxApi20.class).apiKey(clientId).apiSecret(clientSecret).callback(callbackUrl).grantType(OAuthConstants.AUTHORIZATION_CODE).build(); 

로그 :

이제까지 당신이 당신의 플러그인에 필요한 것은
SEVERE: Failed to create Guice container from all the plugins 
com.google.common.collect.ComputationException: java.lang.NoClassDefFoundError: Lorg/scribe/oauth/OAuthService; 
    at com.google.common.collect.ComputingConcurrentHashMap$ComputingMapAdapter.get(ComputingConcurrentHashMap.java:397) 
    at com.google.inject.internal.FailableCache.get(FailableCache.java:49) 
    at com.google.inject.internal.MembersInjectorStore.get(MembersInjectorStore.java:66) 
    at com.google.inject.internal.ConstructorInjectorStore.createConstructor(ConstructorInjectorStore.java:73) 
    at com.google.inject.internal.ConstructorInjectorStore.access$000(ConstructorInjectorStore.java:29) 
    at com.google.inject.internal.ConstructorInjectorStore$1.create(ConstructorInjectorStore.java:36) 
    at com.google.inject.internal.ConstructorInjectorStore$1.create(ConstructorInjectorStore.java:33) 
    at com.google.inject.internal.FailableCache$1.apply(FailableCache.java:38) 
    at com.google.common.collect.ComputingConcurrentHashMap$ComputingValueReference.compute(ComputingConcurrentHashMap.java:355) 
    at com.google.common.collect.ComputingConcurrentHashMap$ComputingSegment.compute(ComputingConcurrentHashMap.java:184) 
    at com.google.common.collect.ComputingConcurrentHashMap$ComputingSegment.getOrCompute(ComputingConcurrentHashMap.java:153) 
    at com.google.common.collect.ComputingConcurrentHashMap.getOrCompute(ComputingConcurrentHashMap.java:69) 
    at com.google.common.collect.ComputingConcurrentHashMap$ComputingMapAdapter.get(ComputingConcurrentHashMap.java:393) 
    at com.google.inject.internal.FailableCache.get(FailableCache.java:49) 
    at com.google.inject.internal.ConstructorInjectorStore.get(ConstructorInjectorStore.java:49) 
    at com.google.inject.internal.ConstructorBindingImpl.initialize(ConstructorBindingImpl.java:127) 
    at com.google.inject.internal.InjectorImpl.initializeBinding(InjectorImpl.java:506) 
    at com.google.inject.internal.AbstractBindingProcessor$Processor$1.run(AbstractBindingProcessor.java:171) 
    at com.google.inject.internal.ProcessedBindingData.initializeBindings(ProcessedBindingData.java:44) 
    at com.google.inject.internal.InternalInjectorCreator.initializeStatically(InternalInjectorCreator.java:123) 
    at com.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java:107) 
    at com.google.inject.Guice.createInjector(Guice.java:94) 
    at com.google.inject.Guice.createInjector(Guice.java:71) 
    at hudson.ExtensionFinder$GuiceFinder.<init>(ExtensionFinder.java:282) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) 
    at java.lang.reflect.Constructor.newInstance(Constructor.java:513) 
    at java.lang.Class.newInstance0(Class.java:357) 
    at java.lang.Class.newInstance(Class.java:310) 
    at net.java.sezpoz.IndexItem.instance(IndexItem.java:181) 
    at hudson.ExtensionFinder$Sezpoz._find(ExtensionFinder.java:625) 
    at hudson.ExtensionFinder$Sezpoz.find(ExtensionFinder.java:600) 
    at hudson.ExtensionFinder._find(ExtensionFinder.java:151) 
    at hudson.ClassicPluginStrategy.findComponents(ClassicPluginStrategy.java:318) 
    at hudson.ExtensionList.load(ExtensionList.java:295) 
    at hudson.ExtensionList.ensureLoaded(ExtensionList.java:248) 
    at hudson.ExtensionList.iterator(ExtensionList.java:138) 
    at hudson.ClassicPluginStrategy.findComponents(ClassicPluginStrategy.java:311) 
    at hudson.ExtensionList.load(ExtensionList.java:295) 
    at hudson.ExtensionList.ensureLoaded(ExtensionList.java:248) 
    at hudson.ExtensionList.get(ExtensionList.java:153) 
    at hudson.PluginManager$PluginUpdateMonitor.getInstance(PluginManager.java:1066) 
    at hudson.maven.PluginImpl.init(PluginImpl.java:54) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at hudson.init.InitializerFinder.invoke(InitializerFinder.java:120) 
    at hudson.init.InitializerFinder$TaskImpl.run(InitializerFinder.java:184) 
    at org.jvnet.hudson.reactor.Reactor.runTask(Reactor.java:259) 
    at jenkins.model.Jenkins$7.runTask(Jenkins.java:888) 
    at org.jvnet.hudson.reactor.Reactor$2.run(Reactor.java:187) 
    at org.jvnet.hudson.reactor.Reactor$Node.run(Reactor.java:94) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918) 
    at java.lang.Thread.run(Thread.java:680) 
Caused by: java.lang.NoClassDefFoundError: Lorg/scribe/oauth/OAuthService; 
    at java.lang.Class.getDeclaredFields0(Native Method) 
    at java.lang.Class.privateGetDeclaredFields(Class.java:2300) 
    at java.lang.Class.getDeclaredFields(Class.java:1745) 
    at com.google.inject.spi.InjectionPoint.getInjectionPoints(InjectionPoint.java:651) 
    at com.google.inject.spi.InjectionPoint.forInstanceMethodsAndFields(InjectionPoint.java:358) 
    at com.google.inject.internal.MembersInjectorStore.createWithListeners(MembersInjectorStore.java:91) 
    at com.google.inject.internal.MembersInjectorStore.access$000(MembersInjectorStore.java:35) 
    at com.google.inject.internal.MembersInjectorStore$1.create(MembersInjectorStore.java:43) 
    at com.google.inject.internal.MembersInjectorStore$1.create(MembersInjectorStore.java:40) 
    at com.google.inject.internal.FailableCache$1.apply(FailableCache.java:38) 
    at com.google.common.collect.ComputingConcurrentHashMap$ComputingValueReference.compute(ComputingConcurrentHashMap.java:355) 
    at com.google.common.collect.ComputingConcurrentHashMap$ComputingSegment.compute(ComputingConcurrentHashMap.java:184) 
    at com.google.common.collect.ComputingConcurrentHashMap$ComputingSegment.getOrCompute(ComputingConcurrentHashMap.java:153) 
    at com.google.common.collect.ComputingConcurrentHashMap.getOrCompute(ComputingConcurrentHashMap.java:69) 
    at com.google.common.collect.ComputingConcurrentHashMap$ComputingMapAdapter.get(ComputingConcurrentHashMap.java:393) 
    ... 56 more 
Caused by: java.lang.ClassNotFoundException: org.scribe.oauth.OAuthService 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247) 
    ... 71 more 
Jun 3, 2013 11:37:17 AM jenkins.InitReactorRunner$1 onAttained 

답변

0

, 당신은 의존에서 같은를 지정합니다.

이유 1 :

젠킨스로드 충돌을 방지하기 위해 별도의 클래스 로더에 각각의 플러그인. 그런 다음 플러그인은 다른 Jenkins 내장 클래스처럼 시스템 활동에 참여할 수 있습니다. 그들은 XStream 기반의 지속성에 참여할 수 있고, Jelly의 "뷰"를 제공 할 수 있으며, 이미지와 같은 정적 리소스를 제공 할 수 있으며 사용자로부터 모든 것이 원활하게 작동합니다. 내장 된 기능과 플러그인의 기능은 구분되지 않습니다. .

이유 2 : 젠킨스가 종속성을 변경할 때 코드를 변경하고 싶지 않습니다.

관련 문제