文系プログラマによるTIPSブログ

文系プログラマ脳の私が開発現場で学んだ事やプログラミングのTIPSをまとめています。

jenkinsのjabber pluginはv1.26からJDK1.7が必須になったので注意!

皆大好きjenkinsのお話です。


f:id:treeapps:20180426142529p:plain

本日新サーバに以前書いた以下の記事を参考に、新規にjenkinsをインストールしました。

しかしjenkins起動時にjenkins jabber pluginがエラーを吐いて動かなかったので、動くように調整する事にしました。

環境

  • CentOS5.5
  • Oracle JDK1.6
  • jenkinsは最新版

エラー内容

警告: Failed to scout hudson.plugins.jabber.im.transport.JabberPublisher
java.lang.UnsupportedClassVersionError: org/jivesoftware/smack/Roster$SubscriptionMode : Unsupported major.minor version 51.0
	at java.lang.ClassLoader.defineClass1(Native Method)
	at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
	at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
	at jenkins.util.AntClassLoader.defineClassFromData(AntClassLoader.java:1138)
	at hudson.ClassicPluginStrategy$AntClassLoader2.defineClassFromData(ClassicPluginStrategy.java:756)
	at jenkins.util.AntClassLoader.getClassFromStream(AntClassLoader.java:1309)
	at jenkins.util.AntClassLoader.findClassInComponents(AntClassLoader.java:1365)
	at jenkins.util.AntClassLoader.findClass(AntClassLoader.java:1325)
	at jenkins.util.AntClassLoader.loadClass(AntClassLoader.java:1078)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
	at hudson.plugins.jabber.im.transport.JabberPublisherDescriptor.<clinit>(JabberPublisherDescriptor.java:75)
	at java.lang.Class.forName0(Native Method)
	at java.lang.Class.forName(Class.java:247)
	at hudson.ExtensionFinder$Sezpoz.scout(ExtensionFinder.java:680)
	at hudson.ClassicPluginStrategy.findComponents(ClassicPluginStrategy.java:337)
	at hudson.ExtensionList.load(ExtensionList.java:300)
	at hudson.ExtensionList.ensureLoaded(ExtensionList.java:253)
	at hudson.ExtensionList.iterator(ExtensionList.java:143)
	at hudson.ClassicPluginStrategy.findComponents(ClassicPluginStrategy.java:336)
	at hudson.ExtensionList.load(ExtensionList.java:300)
	at hudson.ExtensionList.ensureLoaded(ExtensionList.java:253)
	at hudson.ExtensionList.get(ExtensionList.java:158)
	at hudson.PluginManager$PluginUpdateMonitor.getInstance(PluginManager.java:1203)
	at hudson.maven.PluginImpl.init(PluginImpl.java:58)
	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.TaskMethodFinder.invoke(TaskMethodFinder.java:105)
	at hudson.init.TaskMethodFinder$TaskImpl.run(TaskMethodFinder.java:169)
	at org.jvnet.hudson.reactor.Reactor.runTask(Reactor.java:282)
	at jenkins.model.Jenkins$7.runTask(Jenkins.java:885)
	at org.jvnet.hudson.reactor.Reactor$2.run(Reactor.java:210)
	at org.jvnet.hudson.reactor.Reactor$Node.run(Reactor.java:117)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
	at java.lang.Thread.run(Thread.java:662)
2014/10/27 19:01:08 hudson.ExtensionFinder$GuiceFinder$SezpozModule configure
警告: Failed to load hudson.plugins.jabber.im.transport.JabberPublisher
java.lang.UnsupportedClassVersionError: org/jivesoftware/smack/proxy/ProxyInfo$ProxyType : Unsupported major.minor version 51.0
	at java.lang.ClassLoader.defineClass1(Native Method)
	at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
	at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
	at jenkins.util.AntClassLoader.defineClassFromData(AntClassLoader.java:1138)
	at hudson.ClassicPluginStrategy$AntClassLoader2.defineClassFromData(ClassicPluginStrategy.java:756)
	at jenkins.util.AntClassLoader.getClassFromStream(AntClassLoader.java:1309)
	at jenkins.util.AntClassLoader.findClassInComponents(AntClassLoader.java:1365)
	at jenkins.util.AntClassLoader.findClass(AntClassLoader.java:1325)
	at jenkins.util.AntClassLoader.loadClass(AntClassLoader.java:1078)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
	at java.lang.Class.getDeclaredMethods0(Native Method)
	at java.lang.Class.privateGetDeclaredMethods(Class.java:2427)
	at java.lang.Class.privateGetPublicMethods(Class.java:2547)
	at java.lang.Class.getMethods(Class.java:1410)
	at hudson.ExtensionFinder$GuiceFinder$SezpozModule.resolve(ExtensionFinder.java:484)
	at hudson.ExtensionFinder$GuiceFinder$SezpozModule.configure(ExtensionFinder.java:524)
	at com.google.inject.AbstractModule.configure(AbstractModule.java:62)
	at com.google.inject.spi.Elements$RecordingBinder.install(Elements.java:230)
	at com.google.inject.spi.Elements.getElements(Elements.java:103)
	at com.google.inject.internal.InjectorShell$Builder.build(InjectorShell.java:136)
	at com.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java:104)
	at com.google.inject.Guice.createInjector(Guice.java:96)
	at com.google.inject.Guice.createInjector(Guice.java:73)
	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:355)
	at java.lang.Class.newInstance(Class.java:308)
	at net.java.sezpoz.IndexItem.instance(IndexItem.java:181)
	at hudson.ExtensionFinder$Sezpoz._find(ExtensionFinder.java:642)
	at hudson.ExtensionFinder$Sezpoz.find(ExtensionFinder.java:617)
	at hudson.ExtensionFinder._find(ExtensionFinder.java:151)
	at hudson.ClassicPluginStrategy.findComponents(ClassicPluginStrategy.java:343)
	at hudson.ExtensionList.load(ExtensionList.java:300)
	at hudson.ExtensionList.ensureLoaded(ExtensionList.java:253)
	at hudson.ExtensionList.iterator(ExtensionList.java:143)
	at hudson.ClassicPluginStrategy.findComponents(ClassicPluginStrategy.java:336)
	at hudson.ExtensionList.load(ExtensionList.java:300)
	at hudson.ExtensionList.ensureLoaded(ExtensionList.java:253)
	at hudson.ExtensionList.get(ExtensionList.java:158)
	at hudson.PluginManager$PluginUpdateMonitor.getInstance(PluginManager.java:1203)
	at hudson.maven.PluginImpl.init(PluginImpl.java:58)
	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.TaskMethodFinder.invoke(TaskMethodFinder.java:105)
	at hudson.init.TaskMethodFinder$TaskImpl.run(TaskMethodFinder.java:169)
	at org.jvnet.hudson.reactor.Reactor.runTask(Reactor.java:282)
	at jenkins.model.Jenkins$7.runTask(Jenkins.java:885)
	at org.jvnet.hudson.reactor.Reactor$2.run(Reactor.java:210)
	at org.jvnet.hudson.reactor.Reactor$Node.run(Reactor.java:117)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
	at java.lang.Thread.run(Thread.java:662)

よく見るエラーですね。
JDK1.7以降じゃなきゃ動かねーよ!っていうエラーです。

jenkins jabber plugin

Java 7 Needed
Note that since version 1.26 Java / is needed as a requirement to run the plugin. If you still require Java 6 please stay with 1.25 or lower

Jabber Plugin - Jenkins - Jenkins Wiki

上記ページに重要な事が書いてあります。
v1.26からJDK1.7が必要になったよ。お使いのJDKがまだv1.6なら、jabber plugin v1.25より下のバージョンつかってね」とのことです。

対応

利用可能プラグイン一覧に表示されるjabber pluginは既にv1.2.7になっており、使えません。
なので、手動で入れます。

  1. Jenkinsの管理を開く。
  2. プラグインの管理を開く。
  3. 高度な設定を開く。
  4. http://updates.jenkins-ci.org/download/plugins/jabber/1.25/jabber.hpi をDLする。
  5. プラグインのアップロードで.hpiをアップロードしてインストール

これでv1.25がインストールでき、晴れてJDK1.6上でjabber pluginが使えるようになります。

雑感

JDKのバージョンアップってそんな簡単にできないので、この問題は結構困りますね。

手動でインストール後にpluginの管理を開くと、アップデート有りと判断され、うっかりアップデートするとまた使えなくなってしまうという面倒が起きる可能性がありますね。

この辺の融通が効くと嬉しいですね。