При установке плагина для TeamCIty в логе появилась запись с такой ошибкой:
[2014-02-03 18:27:46,309] ERROR - gins.spring.SpringPluginLoader - Failed to initialize spring context for plugin piazza org.springframework.beans.factory.CannotLoadBeanClassException: Error loading class [com.natpryce.piazza.projectConfiguration.PiazzaProjectSettingsFactory] for bean with name 'piazzaProjectSettingsFactory' defined in plugin: piazza#team- piazza-server-1.0-SNAPSHOT.jar!/META-INF/build-server-plugin.xml: problem with class file or dependent class; nested exception is java.lang.UnsupportedClassVersionError: com/natpryce/piazza/projectConfiguration/PiazzaProjectSettingsFacto ry : Unsupported major.minor version 51.0 at org.springframework.beans.factory.support.AbstractBeanFactory.resolveBeanClass(AbstractBeanFactory.java:1253)
Проблема возникла из-за того, что при компиляции и создании jar
-файла использовалась Java более новой версии, чем используется на сервере. Таблица соответствия форматов файлов и версии Java:
J2SE 7 = 51 (0x33 hex), J2SE 6.0 = 50 (0x32 hex), J2SE 5.0 = 49 (0x31 hex), JDK 1.4 = 48 (0x30 hex), JDK 1.3 = 47 (0x2F hex), JDK 1.2 = 46 (0x2E hex), JDK 1.1 = 45 (0x2D hex).
Проверяем текущую версию Java на сервере:
$ java -version java version "1.6.0_24" OpenJDK Runtime Environment (IcedTea6 1.11.13) (rhel-1.65.1.11.13.el6_4-x86_64) OpenJDK 64-Bit Server VM (build 20.0-b12, mixed mode)
Решение – установить более новую версию Java. Т.к. текущая Java установлена глобально для сервера, и используется многими приложениями на на нём – мы установим новую Java только для нашего TeamCity. Качаем архив:
Linux x64 | 44.73 MB | jre-7u51-linux-x64.tar.gz |
Копируем его в отдельную директорию этого пользователя:
$ mv jre-7u51-linux-x64.tar.gz /home/teamcity/opt
Распаковываем:
$ tar xfp jre-7u51-linux-x64.tar.gz
$ ls -l | grep jre drwxr-xr-x 6 teamcity teamcity 4096 Dec 19 05:15 jre1.7.0_51 -rw-r--r-- 1 teamcity teamcity 46904005 Feb 3 19:05 jre-7u51-linux-x64.tar.gz
Теперь – изменим переменную JRE_HOME
для этого пользователя:
$ vim /home/teamcity/.bashrc
# оставляем старую JAVA_HOME export JAVA_HOME=/usr/java/jdk1.6.0_45/ # и устанавливаем новую JRE_HOME export JRE_HOME="/home/teamcity/opt/jre1.7.0_51"
Перечитаем файл .bashrc:
$ . /home/teamcity/.bashrc
Готово.