読者です 読者をやめる 読者になる 読者になる

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

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

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

jenkins java

皆大好きjenkinsのお話です。

本日新サーバに以前書いた以下の記事を参考に、新規に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の管理を開くと、アップデート有りと判断され、うっかりアップデートするとまた使えなくなってしまうという面倒が起きる可能性がありますね。

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

Jenkins実践入門 ?ビルド・テスト・デプロイを自動化する技術 (WEB+DB PRESS plus)

Jenkins実践入門 ?ビルド・テスト・デプロイを自動化する技術 (WEB+DB PRESS plus)

チーム開発実践入門 ~共同作業を円滑に行うツール・メソッド (WEB+DB PRESS plus)

チーム開発実践入門 ~共同作業を円滑に行うツール・メソッド (WEB+DB PRESS plus)

開発ツール徹底攻略 (WEB+DB PRESS plus)

開発ツール徹底攻略 (WEB+DB PRESS plus)