我正在使用以下Stacktrace:
[2015-10-15 19:29:09,264]警告 com.google.gerrit.server.plugins.PluginLoader:无法加载插件 格里特业主-autoassign-1.1 com.google.common.util.concurrent.ExecutionError: com.google.common.util.concurrent.ExecutionError: java.lang.NoClassDefFoundError: COM /谷歌/格里特/扩展/事件/ GitReferenceUpdatedListener $更新 在 com.google.common.cache.LocalCache $ Segment.get(LocalCache.java:2201) 在com.google.common.cache.LocalCache.get(LocalCache.java:3937)at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:3941)at at com.google.common.cache.LocalCache $ LocalLoadingCache.get(LocalCache.java:4824) 在 com.google.common.cache.LocalCache $ LocalLoadingCache.getUnchecked(LocalCache.java:4830) 在 com.google.inject.internal.FailableCache.get(FailableCache.java:48) 在 com.google.inject.internal.ConstructorInjectorStore.get(ConstructorInjectorStore.java:50) 在 com.google.inject.internal.ConstructorBindingImpl.initialize(ConstructorBindingImpl.java:136) 在 com.google.inject.internal.InjectorImpl.initializeBinding(InjectorImpl.java:533) 在 com.google.inject.internal.AbstractBindingProcessor $处理器$ 1.run(AbstractBindingProcessor.java:160) 在 com.google.inject.internal.ProcessedBindingData.initializeBindings(ProcessedBindingData.java:44) 在 com.google.inject.internal.InternalInjectorCreator.initializeStatically(InternalInjectorCreator.java:123) 在 com.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java:107) 在 com.google.inject.internal.InjectorImpl.createChildInjector(InjectorImpl.java:226) 在 com.google.inject.internal.InjectorImpl.createChildInjector(InjectorImpl.java:233) 在 com.google.gerrit.server.plugins.ServerPlugin.startPlugin(ServerPlugin.java:190) 在 com.google.gerrit.server.plugins.ServerPlugin.start(ServerPlugin.java:170) 在 com.google.gerrit.server.plugins.PluginLoader.runPlugin(PluginLoader.java:461) 在 com.google.gerrit.server.plugins.PluginLoader.rescan(PluginLoader.java:390) 在 com.google.gerrit.server.plugins.PluginLoader.start(PluginLoader.java:295) 在 com.google.gerrit.lifecycle.LifecycleManager.start(LifecycleManager.java:74) 在com.google.gerrit.pgm.Daemon.start(Daemon.java:293)at com.google.gerrit.pgm.Daemon.run(Daemon.java:205)at com.google.gerrit.pgm.util.AbstractProgram.main(AbstractProgram.java:64) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在java.lang.reflect.Method.invoke(Method.java:606)at com.google.gerrit.launcher.GerritLauncher.invokeProgram(GerritLauncher.java:166) 在 com.google.gerrit.launcher.GerritLauncher.mainImpl(GerritLauncher.java:93) 在 com.google.gerrit.launcher.GerritLauncher.main(GerritLauncher.java:50) 在Main.main(Main.java:25)引起: com.google.common.util.concurrent.ExecutionError: java.lang.NoClassDefFoundError: COM /谷歌/格里特/扩展/事件/ GitReferenceUpdatedListener $更新 在 com.google.common.cache.LocalCache $ Segment.get(LocalCache.java:2201) 在com.google.common.cache.LocalCache.get(LocalCache.java:3937)at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:3941)at at com.google.common.cache.LocalCache $ LocalLoadingCache.get(LocalCache.java:4824) 在 com.google.common.cache.LocalCache $ LocalLoadingCache.getUnchecked(LocalCache.java:4830) 在 com.google.inject.internal.FailableCache.get(FailableCache.java:48) 在 com.google.inject.internal.MembersInjectorStore.get(MembersInjectorStore.java:68) 在 com.google.inject.internal.ConstructorInjectorStore.createConstructor(ConstructorInjectorStore.java:74) 在 com.google.inject.internal.ConstructorInjectorStore.access $ 000(ConstructorInjectorStore.java:29) 在 com.google.inject.internal.ConstructorInjectorStore $ 1。创建(ConstructorInjectorStore.java:37) 在 com.google.inject.internal.ConstructorInjectorStore $ 1。创建(ConstructorInjectorStore.java:33) 在 com.google.inject.internal.FailableCache $ 1.load(FailableCache.java:37) 在 com.google.common.cache.LocalCache $ LoadingValueReference.loadFuture(LocalCache.java:3527) 在 com.google.common.cache.LocalCache $ Segment.loadSync(LocalCache.java:2319) 在 com.google.common.cache.LocalCache $ Segment.lockedGetOrLoad(LocalCache.java:2282) 在 com.google.common.cache.LocalCache $ Segment.get(LocalCache.java:2197) ... 31更多引起:java.lang.NoClassDefFoundError: COM /谷歌/格里特/扩展/事件/ GitReferenceUpdatedListener $更新 at java.lang.Class.getDeclaredMethods0(Native Method)at java.lang.Class.privateGetDeclaredMethods(Class.java:2615)at at java.lang.Class.getDeclaredMethods(Class.java:1860)at com.google.inject.spi.InjectionPoint.getInjectionPoints(InjectionPoint.java:688) 在 com.google.inject.spi.InjectionPoint.forInstanceMethodsAndFields(InjectionPoint.java:380) 在 com.google.inject.internal.MembersInjectorStore.createWithListeners(MembersInjectorStore.java:93) 在 com.google.inject.internal.MembersInjectorStore.access $ 000(MembersInjectorStore.java:37) 在 com.google.inject.internal.MembersInjectorStore $ 1。创建(MembersInjectorStore.java:45) 在 com.google.inject.internal.MembersInjectorStore $ 1。创建(MembersInjectorStore.java:42) 在 com.google.inject.internal.FailableCache $ 1.load(FailableCache.java:37) 在 com.google.common.cache.LocalCache $ LoadingValueReference.loadFuture(LocalCache.java:3527) 在 com.google.common.cache.LocalCache $ Segment.loadSync(LocalCache.java:2319) 在 com.google.common.cache.LocalCache $ Segment.lockedGetOrLoad(LocalCache.java:2282) 在 com.google.common.cache.LocalCache $ Segment.get(LocalCache.java:2197) ... 46更多引起:java.lang.ClassNotFoundException: com.google.gerrit.extensions.events.GitReferenceUpdatedListener $更新 在java.net.URLClassLoader $ 1.run(URLClassLoader.java:366)at java.net.URLClassLoader $ 1.run(URLClassLoader.java:355)at java.security.AccessController.doPrivileged(Native Method)at java.net.URLClassLoader.findClass(URLClassLoader.java:354)at java.lang.ClassLoader.loadClass(ClassLoader.java:425)at java.lang.ClassLoader.loadClass(ClassLoader.java:358)... 60多个
我不确定应该考虑修复它。
答案 0 :(得分:1)
这看起来像是针对构建插件的API版本与Gerrit服务器的API版本之间的不匹配。
java.lang.NoClassDefFoundError: com/google/gerrit/extensions/events/GitReferenceUpdatedListener$Update
GitReferenceUpdatedListener.Update
班级为removed from the API in Gerrit version 2.8。
要解决此问题,首先应检查服务器运行的Gerrit版本,然后确保已针对具有相应版本的API构建插件。
答案 1 :(得分:0)
我按照说明操作,最后编译了插件,并在此处提交了两个更改:https://github.com/vadims/gerrit-owners/issues/6(查找2个分叉的仓库),它确实有效。
这很痛苦,但插件做得非常棒,值得付出努力!