*Markus: (Linux) Welche Dateien wertet Java wann und wie aus?

Hallo,

Ich möchte hier mal alle javabezogenen Dateien auflisten und würde gerne wissen, wie diese zusammenspielen, da mich eines wundert: Wie kann es sein, dass java-config -L folgendes ausgibt...

The following VMs are available for generation-2:
1)      Sun JDK 1.4.2.13 [sun-jdk-1.4]
*)      Sun JDK 1.5.0.08 [sun-jdk-1.5]
3)      Sun JRE 1.5.0.08 [sun-jre-bin-1.5]

...aber keine der folgenden Dateien irgendetwas mit Java 1.5 beinhaltet, zumal Java-1.5 tadellos funktioniert?

Zum einen sind das im Verzeichnis /etc/env.d/ folgende Dateien:

20java
------------------------------------------

Autogenerated by java-config

Command: --set-system-vm=sun-jdk-1.4

LDPATH=/opt/sun-jdk-1.4.2.13/jre/lib/i386/:/opt/sun-jdk-1.4.2.13/jre/lib/i386/native_threads/:/opt/sun-jdk-1.4.2.13/jre/lib/i386/classic/:/opt/sun-jdk-1.4.2.13/jre/lib/i386/server/
JDK_HOME=/opt/sun-jdk-1.4.2.13
JAVAC=/opt/sun-jdk-1.4.2.13/bin/javac
GENERATION=2
ROOTPATH=/opt/sun-jdk-1.4.2.13/bin:/opt/sun-jdk-1.4.2.13/jre/bin:/opt/sun-jdk-1.4.2.13/jre/javaws
VMHANDLE=sun-jdk-1.4

VERSION=Sun JDK 1.4.2.13

MANPATH=/opt/sun-jdk-1.4.2.13/man
PATH=/opt/sun-jdk-1.4.2.13/bin:/opt/sun-jdk-1.4.2.13/jre/bin:/opt/sun-jdk-1.4.2.13/jre/javaws
JAVA_HOME=/opt/sun-jdk-1.4.2.13

20java-config
-----------------------------------------
MANPATH=/etc/java-config/system-vm/man/
CONFIG_PROTECT_MASK="/etc/java-config/vms/ /etc/env.d/java/"

30java-finalclasspath
----------------------------------------
CLASSPATH=.:/opt/sun-java3d-bin/lib/ext/j3dcore.jar:/opt/sun-java3d-bin/lib/ext/j3dutils.jar:/opt/sun-java3d-bin/lib/ext/vecmath.jar

In diesem Verzeichnis /etc/env.d/ befindet sich noch ein weiteres Verzeichnis "java", das folgende Dateie beinhaltet:

20sun-jdk-1.4.2.13
----------------------------------------

Copyright 1999-2005 Gentoo Foundation

Distributed under the terms of the GNU General Public License v2

$Header: /var/cvsroot/gentoo-x86/dev-java/sun-jdk/files/sun-jdk-1.4.env,v 1.1 2006/06/25 20:06:24 nichoj Exp $

VERSION="Sun JDK 1.4.2.13"
JAVA_HOME=/opt/sun-jdk-1.4.2.13
JDK_HOME=/opt/sun-jdk-1.4.2.13
JAVAC=${JAVA_HOME}/bin/javac
PATH="${JAVA_HOME}/bin:${JAVA_HOME}/jre/bin:${JAVA_HOME}/jre/javaws"
ROOTPATH="${JAVA_HOME}/bin:${JAVA_HOME}/jre/bin:${JAVA_HOME}/jre/javaws"
LDPATH="${JAVA_HOME}/jre/lib/i386/:${JAVA_HOME}/jre/lib/i386/native_threads/:${JAVA_HOME}/jre/lib/i386/classic/:${JAVA_HOME}/jre/lib/i386/server/"
MANPATH="/opt/sun-jdk-1.4.2.13/man"
GENERATION="2"
ENV_VARS="JAVA_HOME JDK_HOME JAVAC PATH ROOTPATH LDPATH MANPATH"
VMHANDLE="sun-jdk-1.4"

Irgendwoher muss doch Java die Information bekommen, dass /opt/sun-jdk-1.5.0.08 das "richtige" Verzeichnis ist, aber woher tut es das?

java -version gibt ebenfalls folgendes aus:

java version "1.5.0_08"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_08-b03)
Java HotSpot(TM) Client VM (build 1.5.0_08-b03, mixed mode)

Markus

--
http://www.apostrophitis.at
六 7東曲 人港ラ
  1. Hey,
    überprüfe die Variable PATH.

    --
    水-金-地-火-木-土-天-海-冥
    1. Posting zurück, ist ja schon indirekt gesetzt. Ich geh besser ins Bett.

  2. Hej,

    Ich möchte hier mal alle javabezogenen Dateien auflisten

    Es sind keine Dateien, sondern die bei dir installierten und am System registrierten Java-Umgebungen.

    und würde gerne wissen, wie diese zusammenspielen

    Soweit ich das von Ubuntu kenne, gar nicht! Und das ist auch der Gag.

    Wie kann es sein, dass java-config -L folgendes ausgibt...

    Du weißt ja inzwischen, dass ich von Gentoo kaum einen Blaßen habe, aber der erste Google-Treffer bestätigte meine Vermutung: Die meisten Linuxe sind mit einem Alternativen-System  ausgestattet, welches erlaubt verschiedene Versionen von einer Anwendung installiert zu haben und diese verwaltet.
    Beispiel: Du benötigst zu Entwicklungszwecken Java 1.6, für den Produktiv-Einsatz aber Java 1.4. Wenn du jetzt beide installiert hast, welche Version wird dann bei dem Aufruf von 'java' gestartet?

    Das Alternativen-System kennt alle installierten Versionen und bietet die Möglichkeit im Betrieb zwischen den Versionen umzuschalten. Dabei bedeutet umschalten eben auch nicht nur den link in /usr/bin/ zu setzen, sondern z.B. auch eine ganz andere Konfiguration an Umgebungsvariablen oder anderen Abhängigkeiten zu laden. Und wenn ich das richtig sehe, ist java-config ein solches Alternativen-System speziell für Java.

    ...aber keine der folgenden Dateien irgendetwas mit Java 1.5 beinhaltet, zumal Java-1.5 tadellos funktioniert?

    ??? Und was ist das:

    The following VMs are available for generation-2:
    1)      Sun JDK 1.4.2.13 [sun-jdk-1.4]
    *)      Sun JDK 1.5.0.08 [sun-jdk-1.5]

    ^---------------------------------- ?

    3)      Sun JRE 1.5.0.08 [sun-jre-bin-1.5]

    ^---------------------------------- ?

    Vielleicht kurz zu den Bezeichnungen: Das JRE ist das reine Java Runtime Environment, welches die VM und die kompilierten Klassen des RT, eventuell noch Plugins und Hilfsprogramme einschließt. Das JDK hingegen ist das Java Development Kit, welches zusätzlich zur JRE auch die Quellcodes, die Javadocs zur API und weitere Hilfsprogramme wie Compiler und Debugger beinhaltet.

    Irgendwoher muss doch Java die Information bekommen, dass /opt/sun-jdk-1.5.0.08 das "richtige" Verzeichnis ist, aber woher tut es das?

    *)      Sun JDK 1.5.0.08 [sun-jdk-1.5]

    ^------------------------------------------ !

    Beste Grüße
    Biesterfeld

    --
    Art.1: Et es wie et es
    Art.2: Et kütt wie et kütt
    Art.3: Et hätt noch immer jot jejange
    Das Kölsche Grundgesetz
    1. Hallo,

      ??? Und was ist das:

      The following VMs are available for generation-2:
      1)      Sun JDK 1.4.2.13 [sun-jdk-1.4]
      *)      Sun JDK 1.5.0.08 [sun-jdk-1.5]
                           ^---------------------------------- ?
      3)      Sun JRE 1.5.0.08 [sun-jre-bin-1.5]
                           ^---------------------------------- ?

      Ja, das ist ja auch klar, denn das ist eine Konsolenausgabe der zur Verfügung stehenden JDKs, wobei ich die 1.5er standardmäßig benutze, wie ich auch sagte. Warum man aber in den Dateien davon nichts sieht, ist natürlich die große Preisfrage.

      Markus

      --
      http://www.apostrophitis.at
      六 7東曲 人港ラ
      1. Hej,

        Warum man aber in den Dateien davon nichts sieht, ist natürlich die große Preisfrage.

        Achso ... jetzt versteh ich. Naja, da kann ich dir wahrscheinlich auch nicht helfen, da ich kein java-config zur Verfügung habe (schade eigentlich, das sieht ganz nett aus) und wie du weißt für meine JDKs auch keine Paketverwaltung einsetze. Genau aus solchen Gründen.

        Mal auf die Suche nach dem JDK gegangen?
        locate bin/java | grep 1.5

        Beste Grüße
        Biesterfeld

        --
        Art.1: Et es wie et es
        Art.2: Et kütt wie et kütt
        Art.3: Et hätt noch immer jot jejange
        Das Kölsche Grundgesetz
        1. Hallo,

          Mal auf die Suche nach dem JDK gegangen?
          locate bin/java | grep 1.5

          locate habe ich zur Zeit nicht im System, bin jetzt auch zu faul es zu "emergen". :) Die Frage hat sich letzendlich durch Jens' Hinweis beantwortet.

          Markus

          --
          http://www.apostrophitis.at
          六 7東曲 人港ラ
  3. Tach,

    Zum einen sind das im Verzeichnis /etc/env.d/ folgende Dateien:

    was in /etc/env.d/ steht spielt frühestens eine Rolle, wenn env-update ausgeführt wurde. Die systemweite JVM wird in /etc/profile.d/java-config-2.sh abgelegt, wenn du da reinsiehst, ist die systemweite JVM unter /etc/java-config-2/current-system-vm verlinkt.

    mfg
    Woodfighter

    1. Hallo,

      was in /etc/env.d/ steht spielt frühestens eine Rolle, wenn env-update ausgeführt wurde. Die systemweite JVM wird in /etc/profile.d/java-config-2.sh abgelegt, wenn du da reinsiehst, ist die systemweite JVM unter /etc/java-config-2/current-system-vm verlinkt.

      Das env-Update ist mir klar. Bei mir ist in /etc/java-config-2/current-system-vm nichts verlinkt (es sind nur Verzeichnisse), sondern durch deinen Hinweis fand ich gerade heraus, dass das Wechseln zwischen den JDKs mittels java-config dazu führt, dass  die Dateien der jeweils ausgewählten VM dort hineinkopiert werden. Jetzt verstehe ich auch, warum das Wechseln zwischen den VMs eine gewisse Verzögerung beim "Umschalten" verursacht. Das ist offensichtlich die Zeit, in der die Daten dort hineinkopiert werden.
      Ich habe dies mit ./java -version überprüft, wobei ich mich genau in diesem Verzeichnis befand um ganz sicher zu gehen.
      Die Frage ist somit beantwortet.

      Markus

      --
      http://www.apostrophitis.at
      六 7東曲 人港ラ