[sisyphus] java, tomcat5, alternatives и все-все-все...

Andrew Kornilov =?iso-8859-1?q?akornilov_=CE=C1_gmail=2Ecom?=
Чт Авг 30 21:23:52 MSD 2007


Привет всем.

1. Уже больше часа пытаюсь понять, как у нас правильно переключать java
через alternatives. Кто-нибудь знает?
2. Вот этот код set_jvm_dirs() из /usr/share/java-utils/java-functions:
=========================================
    JAVA_VERSION=
    re='\([[:digit:]]\{1,\}\.[[:digit:]]\{1,\}\(\.[[:digit:]]\{1,\}\)*\)'
    for opt in -fullversion -version ; do
        # Yuck, "grep -o" would be cleaner, but requires GNU grep >= 2.5.
        # This could be improved/simplified if sed had non-greedy matching.
        JAVA_VERSION=$($JAVACMD $opt 2>&1 | sed -n \
            -e '/java \(full \)*version "/s/'$re'/<<<\1>>>/' \
            -e '/java \(full \)*version "/s/.*<<<\([^>]\{1,\}\)>>>.*/\1/p')
        if [ -n "$JAVA_VERSION" ] ; then
            break
        fi
    done
=========================================
не работает с java-1.7.0 (вывод -version и -fullversion совсем не такой,
как был раньше в java). Соответственно, поломалось всё :)

3. tomcat5 хочет именно java-1.7.0 или что-то из неё, не разбирался
глубоко пока, но при попытке удалить 1.7.0 (и наличии 1.5, 1.6), apt
хочет удалить и сам tomcat5.
4. Как же запустить tomcat5?
=========================================
service tomcat5 start
Starting tomcat5: lock file found but no process running for
pid 25688, continuing
/usr/bin/rebuild-jar-repository: error: JAVAVER_LIBDIR /usr/share/java-
does not exist or is not a directory
/usr/bin/rebuild-jar-repository: error: JAVAVER_LIBDIR /usr/share/java-
does not exist or is not a directory
/usr/bin/rebuild-jar-repository: error: JAVAVER_LIBDIR /usr/share/java-
does not exist or is not a directory
/usr/bin/rebuild-jar-repository: error: JAVAVER_LIBDIR /usr/share/java-
does not exist or is not a directory
=========================================
Даже если вбить в ту функцию явно версию 1.7.0, все равно не работает,
видимо, еще где-то что-то определяет, в логах вот такое:
=========================================
Using CATALINA_BASE:   /usr/share/tomcat5
Using CATALINA_HOME:   /usr/share/tomcat5
Using CATALINA_TMPDIR: /usr/share/tomcat5/temp
Using JRE_HOME:
java.lang.ClassNotFoundException: org.apache.catalina.startup.Catalina
        at java.net.URLClassLoader$1.run(URLClassLoader.java:221)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:209)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:324)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:269)
        at org.apache.catalina.startup.Bootstrap.init(Bootstrap.java:222)
        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:410)
=========================================
Похоже, jre_home определить не может.
Такой запутанной системы работы я уже давно не видел, куча функций,
альтернатив, runtime определений. Оно действительно нужно и работает? :-)



Подробная информация о списке рассылки Sisyphus