Anzeige:
Ergebnis 1 bis 9 von 9

Thema: Classpath

  1. #1
    Registrierter Benutzer
    Registriert seit
    27.10.2005
    Beiträge
    5

    Classpath

    Diesen Text hatte ich schonmal in ein JavaForum geschrieben, allerdings scheinen die meisten da mit Windows zu arbeiten, also hier nochmal, es wäre nett, wenn hier jemand weiterweis:

    Hallo, bin neu in der Java-Welt und zeitgleich auch neu in der Linux-Welt.

    Ich besitze das Linux-System SUSE 10.0.
    Habe es installiert und alles ist damit soweit in Ordnung, nun wollte ich auch Java drauf hauen.

    Also habe ich mir das ( Filename ) jdk-1_5_0_04-linux-i586.bin runtergeladen.
    Nun habe ich es unter /home/platti/java/ installiert und mit meinem Mozilla symbolisch verlinkt, was alles anscheinend gut geklappt hat.
    Dann hab ich mir jedit runtergeladen, installiert und mein HelloWorld.java erstellt, um zu testen ob alles funktioniert.
    Dann kam schon beim javac eine Fehlermeldung: javac: command not found.
    Gut nun googelte ich schnell den Fehler und fand, dass man den kompletten Pfad angeben sollte, also bei mir: /home/platti/java/bin/javac
    HelloWorld.java und siehe da es funktioniert, ich hatte eine HelloWorld.class in meinem bin Ordner!
    Nun dachte ich, dass man den Pfad ja nicht immer eingeben muss, da es bei mir in der Uni auch nicht so ist, aber dieses Prob, wollte ich später lösen, nachdem das Programm gelaufen ist.
    Also schnell: java HelloWorld.class --> Exception in thread "main" java.lang.NoClassDefFoundError: HelloWorld/class
    Ich: WAS?
    Gegooglet: Irgendwas mit CLASSPATH gefunden und das der CLASSPATH, also wo java die .class Dateien sucht nicht finden kann.
    Danach tausende von Zeugs durchsucht und gemacht darunter: unset CLASSPATH / echo $CLASSPATH bla bla UND java -classpath /home/platti/java/bin <-- da dachte ich, es muss ja funktionieren und was sagt er wenn ich den Befehl eingebe:
    Usage: java [-options] class [args...]
    (to execute a class)
    or java [-options] -jar jarfile [args...]
    (to execute a jar file)
    bla bla, also sowas wie ne Hilfe ... sprich der nimmt meinen Befehl nicht an.

    Kann mir einer der sich auskennt bitte helfen? Ich werd gleich verrückt icon_sad.gif

    mfg DER pLaTTi

  2. #2
    Registrierter Benutzer Avatar von peschmae
    Registriert seit
    14.03.2002
    Ort
    Schweizland
    Beiträge
    4.549
    export PATH=$PATH:/home/platti/java/bin/javac

    in deine .bashrc im Homeverzeichnis schreiben damit er javac findet.

    Zum CLASSPATH: Am besten machst du ein "export CLASSPATH=." dann sollte er die Klasse finden solange du dich, wenn du den java-Befehl ausführst, im selben Verzeichnis befindest in dem die .class-Datei ist.
    Wobei eigentlich sollte er das glaub ich auch sonst. Merkwürdig dass das nicht geht.

    MfG Peschmä
    The greatest trick the Devil ever pulled was convincing the world he didn't exist. -- The Usual Suspects (1995)
    Hey, I feel their pain. It's irritating as hell when people act like they have rights. The great old one (2006)

  3. #3
    Registrierter Benutzer
    Registriert seit
    27.10.2005
    Beiträge
    5
    Ok, ich habe die Befehlszeile in die .bashrc reingeschrieben und zwar so:

    export PATH=$PATH:/home/platti/java/bin/javac

    und auch so

    #export PATH=$PATH:/home/platti/java/bin/javac

    leider schreibt er immer noch bash: javac: command not found

    Ok, naja .class hab ich dann nochmal normal gemacht ... und bevor ich "java HelloWorld" und "java HelloWorld.class" eingegeben hatte "export CLASSPATH=." eingegeben.

    NIX, einfach NIX.

    Ich werd verrückt, langsam frag ich mich, obs an meiner Installation liegt ...

  4. #4
    Registrierter Benutzer Avatar von peschmae
    Registriert seit
    14.03.2002
    Ort
    Schweizland
    Beiträge
    4.549
    Oh, das sollte
    export PATH=$PATH:/home/platti/java/bin
    heissen. Also der Pfad zum Ordner mit dem Executable und nicht zum Executable direkt.

    Das mit dem java muss übrigens definitiv
    java HelloWorld
    heissen (und nicht java HelloWorld.class oder so); aber wenn das mit so bzw. classpath nicht geht kann ich dir leider auch nicht weiterhelfen.

    MfG Peschmä
    The greatest trick the Devil ever pulled was convincing the world he didn't exist. -- The Usual Suspects (1995)
    Hey, I feel their pain. It's irritating as hell when people act like they have rights. The great old one (2006)

  5. #5
    Registrierter Benutzer
    Registriert seit
    27.10.2005
    Beiträge
    5
    Ich habe eine fantastische Entdeckung gemacht, nachdem ich im YaST Kontrollzentrum unter "Internet&Netzwerk" --> "Webbrowser" --> "Java & Java-Script" --> "Pfad zur ausführbaren Java-Datei oder zu "java"" den Pfad /home/platti/java eingegeben und nun gibt er wenn ich im Terminal /home/platti/java/bin/java HelloWorld auch korrekt "Hello World!" aus, sprich, ich kann endlich anfangen ein bisschen zu proggen.

    Allerdings würde ich gerne den Pfad nicht angeben ... sprich java -classpath /home/platti/java/bin sollte dann schon gehen, ohne das ich den Pfad immer eingeben muss.

    Und die Korrektur in .bashrc geht leider auch nicht

  6. #6
    Registrierter Benutzer Avatar von undefined
    Registriert seit
    01.03.2004
    Beiträge
    1.255
    Aha - du verwendest SuSE auch mal nett zu wissen
    Siehe bitte unter /etc/java/java.conf und /etc/profile.d/alljava.sh nach
    mfg undefined
    --
    Undefined Behavior (undefiniertes Verhalten) bedeutet meistens etwas ungültiges.
    xhtml Debugger

  7. #7
    Registrierter Benutzer
    Registriert seit
    27.10.2005
    Beiträge
    5
    @undefinied

    Ich will dir ja nicht zu Nahe treten, aber wer lesen kann ist klar im Vorteil. Siehe dazu auch den Quote meines Eingangspostes!

    Zitat Zitat von pLaTTi
    Ich besitze das Linux-System SUSE 10.0.
    Habe es installiert und alles ist damit soweit in Ordnung, nun wollte ich auch Java drauf hauen.
    Dein Tipp werde ich gleich mal verfolgen.

  8. #8
    Registrierter Benutzer
    Registriert seit
    27.10.2005
    Beiträge
    5
    Ok, also ich habe beide Dateien mal geöffnet:

    Eine wichtige Frage habe ich nocht wegen Linux, was bedeutet denn immer das $-Zeichen z.B. vor Path angaben

    Meine alljava.sh sieht so aus:

    #
    # /etc/profile.d/alljava.sh
    #
    # send feedback to http://www.suse.de/feedback

    #
    # This script sets some environment variables for default java.
    # Affected variables: PATH, JAVA_BINDIR, JAVA_HOME, JRE_HOME,
    # JDK_HOME, SDK_HOME
    #

    __libdir=lib
    if [ -x /usr/lib64/jvm/java ] || [ -x /usr/lib64/jvm/jre ] ; then
    __libdir=lib64
    fi

    if [ -x /usr/$__libdir/jvm/java/bin/java ] || [ -x /usr/$__libdir/jvm/java/bin/jre ] ; then
    export JAVA_BINDIR=/usr/$__libdir/jvm/java/bin
    export JAVA_ROOT=/usr/$__libdir/jvm/java
    export JAVA_HOME=/usr/$__libdir/jvm/java
    if [ -x /usr/$__libdir/jvm/java/jre/bin/java ] ; then
    export JRE_HOME=/usr/$__libdir/jvm/java/jre
    else
    export JRE_HOME=/usr/$__libdir/jvm/java
    fi
    unset JDK_HOME
    unset SDK_HOME
    if [ -x /usr/$__libdir/jvm/java/bin/javac ] ; then
    # it is development kit
    if [ -x /usr/$__libdir/jvm/java/bin/jre ] ; then
    export JDK_HOME=/usr/$__libdir/jvm/java
    else
    export JDK_HOME=/usr/$__libdir/jvm/java
    export SDK_HOME=/usr/$__libdir/jvm/java
    fi
    fi
    else
    if [ -x /usr/$__libdir/jvm/jre/bin/java ] ; then
    # it is IBMJava2-JRE or SunJava2-JRE
    export PATH=$PATH:/usr/$__libdir/jvm/jre/bin
    export JAVA_BINDIR=/usr/$__libdir/jvm/jre/bin
    export JAVA_ROOT=/usr/$__libdir/jvm/jre
    export JAVA_HOME=/usr/$__libdir/jvm/jre
    export JRE_HOME=/usr/$__libdir/jvm/jre
    unset JDK_HOME
    unset SDK_HOME
    fi
    fi

    unset __libdir


    meine java.conf sieht so aus

    # System-wide Java configuration file -*- sh -*-
    #
    # JPackage Project <http://www.jpackage.org/>
    # Location of jar files on the system
    JAVA_LIBDIR=/home/platti/java
    # Location of arch-specific jar files on the system
    JNI_LIBDIR=/usr/lib64/java
    # Location of 32 bit arch-specific jar files on the system
    JNI_LIBDIR32=/usr/lib/java
    # Root of all native JVM installations
    JVM_ROOT=/usr/lib64/jvm
    # Root of all 32 bit JVM installations
    JVM_ROOT32=/usr/lib/jvm
    # You can define a system-wide JVM root here if you're not using the default one
    #JAVA_HOME=$JVM_ROOT/java-bea
    # Options to pass to the java interpreter
    JAVACMD_OPTS=

    den Pfad zu meiner JAVA_LIBDIR hab ich da schon geändert, ich schätze dadurch geht mein javac jetzt auch ohne Angabe des kompletten Pfades, allerdings geht java immer noch nicht
    Geändert von pLaTTi (28-10-2005 um 13:59 Uhr)

  9. #9
    Registrierter Benutzer Avatar von undefined
    Registriert seit
    01.03.2004
    Beiträge
    1.255
    Zitat Zitat von pLaTTi
    @undefinied

    Ich will dir ja nicht zu Nahe treten, aber wer lesen kann ist klar im Vorteil. Siehe dazu auch den Quote meines Eingangspostes!


    Dein Tipp werde ich gleich mal verfolgen.
    meaculpa

    Eine wichtige Frage habe ich nocht wegen Linux, was bedeutet denn immer das $-Zeichen z.B. vor Path angaben
    Das Dollar Zeichen besagt das ich um eine bereits gesetzte Variable handelt.

    den Pfad zu meiner JAVA_LIBDIR hab ich da schon geändert, ich schätze dadurch geht mein javac jetzt auch ohne Angabe des kompletten Pfades, allerdings geht java immer noch nicht
    Java müste gehen weil SuSE eine Verknüpfung auf /usr/bin setzt!
    Siehe

    Code:
    find /usr/bin/ -type l -name "*java*"
    ## oder besser ls bei mir kommt das
    ls -l /usr/bin/*java*
    lrwxrwxrwx  1 root root 22 2005-04-14 20:49 /usr/bin/java -> /etc/alternatives/java
    lrwxrwxrwx  1 root root 23 2005-04-17 13:19 /usr/bin/javac -> /etc/alternatives/javac
    lrwxrwxrwx  1 root root 25 2005-04-17 13:19 /usr/bin/javadoc -> /etc/alternatives/javadoc
    lrwxrwxrwx  1 root root 23 2005-04-17 13:19 /usr/bin/javah -> /etc/alternatives/javah
    lrwxrwxrwx  1 root root 23 2005-04-17 13:19 /usr/bin/javap -> /etc/alternatives/javap
    mfg undefined
    --
    Undefined Behavior (undefiniertes Verhalten) bedeutet meistens etwas ungültiges.
    xhtml Debugger

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •