PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Java Development Kit Installation



Sandra
01.04.2008, 19:46
Hallo,

ich habe vor wenigen Tagen angefangen JAVA, mit der Anwendung "netbeans", zu programmieren. Läuft auch alles ganz gut soweit. Allerdings schleichen sich immer wieder Meldung auf meinen Konsolenbildschirm, die mir Rätsel aufwerfen....

Bevor ich die Meldungen durchgebe, sage ich erstmal wie ich bis dahin vorgegangen bin:

1. Ich habe mir "J2EE JDK 1.3" von dieser Seite (http://java.sun.com/j2ee/1.3/index.jsp) runtergeladen

2. Habe es installiert in /opt/SUNWappserver/ (so hat mir der Installationsguide das vorgeschlagen)

3. Wenn ich jetzt "netbeans" starten möchte bleibt er beim Laden eines spezifischen Moduls hängen und gibt mir eine Fehlermeldung aus

siehe hier (http://img167.imageshack.us/img167/4853/netbeansrx6.png)

Also bin ich dem Rat gefolgt und habe in der Konsole


netbeans --jdkhome /opt/SUNWappserver/jdk

eingegeben

-> LÄUFT

............ Nun möchte ich aber nicht jedes mal diese Eingabe machen .............

Somit habe ich mich informiert und herausgefunden das folgende Infos erstmal wichtig sind:

set | grep -i java


JAVA_BINDIR=/usr/lib/jvm/jre/bin
JAVA_HOME=/usr/lib/jvm/jre
JAVA_ROOT=/usr/lib/jvm/jre


Wie man sieht fehlen die JDK Einträge

versuche ich ins Verzeichnis /usr/bin/ einen symbolischen Link zu setzen bekomme ich diese Meldung:


ln -s /opt/SUNWappserver/jdk/bin/java
ln: Erzeuge symbolische Verknüpfung „./java“: Die Datei existiert bereits

........... O.K. weiter gedacht .........................

dann habe diese Eingabe versucht:


export PATH=$PATH: /opt/SUNWappserver/jdk/bin

dieser Eintrag bleibt aber nur vorübergehend für die aktuelle Sitzung :-(

Gut.... also im I-net gesucht..... TIPP: die etc/profile ändern....

Wenn ich mir meine /etc/profile anschaue verstehe ich nur Bahnhof....

Ich stell sie mal hier rein:


# /etc/profile for SuSE Linux
#
# PLEASE DO NOT CHANGE /etc/profile. There are chances that your changes
# will be lost during system upgrades. Instead use /etc/profile.local for
# your local settings, favourite global aliases, VISUAL and EDITOR
# variables, etc ...

#
# Check which shell is reading this file
#
if test -f /proc/mounts ; then
case "`/bin/ls -l /proc/$$/exe`" in
*/bash) is=bash ;;
*/ash) is=ash ;;
*/ksh) is=ksh ;;
*/pdksh) is=ksh ;;
*/zsh) is=zsh ;;
*/*) is=sh ;;
esac
#
# `r' in $- occurs *after* system files are parsed
#
for a in $SHELL ; do
case "$a" in
*/r*sh)
readonly restricted=true ;;
-r*|-[!-]r*|-[!-][!-]r*)
readonly restricted=true ;;
--restricted)
readonly restricted=true ;;
esac
done
else
is=sh
fi

#
# Initialize terminal
#
tty=`tty 2> /dev/null`
test $? -ne 0 && tty=""
if test -O "$tty" -a -n "$PS1"; then
test -z "${TERM}" && { TERM=linux; export TERM; }
test "${TERM}" = "unknown" && { TERM=linux; export TERM; }
# Do not change settings on local line if connected to remote
if test -z "$SSH_TTY" ; then
test -x /bin/stty && /bin/stty sane cr0 pass8 dec
test -x /usr/bin/tset && /usr/bin/tset -I -Q
fi
# on iSeries virtual console, detect screen size and terminal
if test -d /proc/iSeries -a \( "$tty" = "/dev/tty1" -o "$tty" = "/dev/console" \) ; then
LINES=24
COLUMNS=80
export LINES COLUMNS TERM
if test -x /bin/initviocons ; then
eval `/bin/initviocons -q -e`
fi
fi
fi
unset TERMCAP

#
# Time until a complete key sequence must have arrived
#
#ESCDELAY=2000
#export ESCDELAY

#
# The user file-creation mask
#
# The global umask value is stored in /etc/login.defs and
# will be set by pam_umask.so (see "man pam_umask").
#umask 022

#
# Setup for gzip and (t)csh users
#
if test -z "$PROFILEREAD" ; then
# GZIP=-9
# export GZIP
CSHEDIT=emacs
export CSHEDIT
fi

#
# ksh/ash sometimes do not know
#
test -z "$UID" && readonly UID=`id -ur 2> /dev/null`
test -z "$EUID" && readonly EUID=`id -u 2> /dev/null`
test -z "$USER" && USER=`id -un 2> /dev/null`
test -z "$MAIL" && MAIL=/var/spool/mail/$USER
test -z "$HOST" && HOST=`/bin/hostname -s 2> /dev/null`
test -z "$CPU" && CPU=`/bin/uname -m 2> /dev/null`
test -z "$HOSTNAME" && HOSTNAME=`/bin/hostname 2> /dev/null`
test -z "$LOGNAME" && LOGNAME=$USER
case "$CPU" in
i?86) HOSTTYPE=i386 ;;
*) HOSTTYPE=${CPU} ;;
esac
OSTYPE=linux
MACHTYPE=${CPU}-suse-${OSTYPE}
# Do NOT export UID, EUID, USER, and LOGNAME
export MAIL HOST CPU HOSTNAME HOSTTYPE OSTYPE MACHTYPE

#
# You may use /etc/initscript, /etc/profile.local or the
# ulimit package instead to set up ulimits and your PATH.
#
# if test "$is" != "ash" -a ! -r /etc/initscript; then
# ulimit -Sc 0 # don't create core files
# ulimit -Sd $(ulimit -Hd)
# ulimit -Ss $(ulimit -Hs)
# ulimit -Sm $(ulimit -Hm)
# fi

#
# Make path more comfortable
#
if test -z "$PROFILEREAD" ; then
PATH=/usr/local/bin:/usr/bin:/bin
if test "$HOME" != "/" ; then
for dir in $HOME/bin/$CPU $HOME/bin ; do
test -d $dir && PATH=$dir:$PATH
done
fi
if test "$UID" = 0 ; then
test -d /opt/kde3/sbin && PATH=/opt/kde3/sbin:$PATH
PATH=/sbin:/usr/sbin:/usr/local/sbin:$PATH
fi
for dir in /usr/X11/bin \
/usr/bin/X11 \
/usr/X11R6/bin \
/var/lib/dosemu \
/usr/games \
/opt/bin \
/opt/kde3/bin \
/opt/kde2/bin \
/opt/kde/bin \
/usr/openwin/bin \
/opt/cross/bin
do
test -d $dir && PATH=$PATH:$dir
done
unset dir
export PATH
fi

#
# Many programs using readline library for line editing
# should know about this (e.g. bash)
#
if test -z "$INPUTRC" ; then
INPUTRC=/etc/inputrc
test -s $HOME/.inputrc && INPUTRC=$HOME/.inputrc
export INPUTRC
fi

#
# Most bourn shell clones knows about this
#
if test -z "$PROFILEREAD" ; then
HISTSIZE=1000
export HISTSIZE
fi

#
# Set some environment variables for TeX/LaTeX
#
if test -n "$TEXINPUTS" ; then
TEXINPUTS=":$TEXINPUTS:$HOME/.TeX:/usr/share/doc/.TeX:/usr/doc/.TeX"
else
TEXINPUTS=":$HOME/.TeX:/usr/share/doc/.TeX:/usr/doc/.TeX"
fi
export TEXINPUTS

#
# Configure the default pager on SuSE Linux
#
if test -z "$LESS" ; then
LESS="-M -I"
LESSOPEN="lessopen.sh %s"
LESSCLOSE="lessclose.sh %s %s"
LESS_ADVANCED_PREPROCESSOR="no"
if test -s /etc/lesskey.bin ; then
LESSKEY=/etc/lesskey.bin
fi
PAGER=less
MORE=-sl
export LESSOPEN LESSCLOSE LESS LESSKEY PAGER LESS_ADVANCED_PREPROCESSOR MORE
fi

#
# Minicom
#
if test -z "$PROFILEREAD" ; then
MINICOM="-c on"
export MINICOM
fi

#
# Current manpath
#
if test -z "$PROFILEREAD" ; then
tmp="$MANPATH"
unset MANPATH
if test -n "$tmp" ; then
MANPATH="${tmp}:`test -x /usr/bin/manpath && /usr/bin/manpath -q`"
else
MANPATH="`test -x /usr/bin/manpath && /usr/bin/manpath -q`"
fi
unset tmp
export MANPATH
fi

#
# Some applications do not handle the XAPPLRESDIR environment properly,
# when it contains more than one directory. More than one directory only
# makes sense if you have a client with /usr mounted via nfs and you want
# to configure applications machine dependent. Uncomment the lines below
# if you want this.
#
#XAPPLRESDIR="$XAPPLRESDIR:/var/X11R6/app-defaults:/usr/X11R6/lib/X11/app-defaults"
#export XAPPLRESDIR

#
# Set INFOPATH to tell xemacs where he can find the info files
#
if test -z "$PROFILEREAD" ; then
tmp="$INFODIR"
if test -n "$tmp" ; then
INFODIR="${tmp}:/usr/local/info:/usr/share/info:/usr/info"
else
INFODIR="/usr/local/info:/usr/share/info:/usr/info"
fi
INFOPATH=$INFODIR
unset tmp
export INFODIR INFOPATH
fi

#
# These settings are recommended for old motif applications
#
if test -z "$PROFILEREAD" ; then
if [ -r /usr/share/X11/XKeysymDB ]; then
export XKEYSYMDB=/usr/share/X11/XKeysymDB
else
export XKEYSYMDB=/usr/X11R6/lib/X11/XKeysymDB
fi
if [ -d /usr/share/X11/nls ]; then
export XNLSPATH=/usr/share/X11/nls
else
export XNLSPATH=/usr/X11R6/lib/X11/nls
fi

#
# Midnight Commander needs this to run in color mode
#
COLORTERM=1
export COLORTERM
fi

#
# For RCS
#
#VERSION_CONTROL=numbered
#export VERSION_CONTROL

#
# Source the files generated by SuSEconfig
#
# But do not source this if PROFILEREAD is already set to avoid
# overriding locale variables already present in the environment
#
if test -z "$PROFILEREAD" ; then
test -r /etc/profile.d/sh.ssh && . /etc/profile.d/sh.ssh
test -r /etc/SuSEconfig/profile && . /etc/SuSEconfig/profile
if test -z "$SSH_SENDS_LOCALE" ; then
if test -r /etc/sysconfig/language -a -r /etc/profile.d/sh.utf8 ; then
tmp="$(. /etc/sysconfig/language; echo $AUTO_DETECT_UTF8)"
test "$tmp" = "yes" && . /etc/profile.d/sh.utf8
unset tmp
fi
fi
fi

#
# Source profile extensions for certain packages
#
if test -d /etc/profile.d -a -z "$PROFILEREAD" ; then
for s in /etc/profile.d/*.sh ; do
test -r $s && . $s
done
unset s
fi

if test "$is" != "ash" ; then
#
# And now let's see if there is a local profile
# (for options defined by your sysadmin, not SuSE Linux)
#
test -s /etc/profile.local && . /etc/profile.local
fi

#
# System wide configuration of bourne shells like ash
#
if test "$is" != "ksh" -a -z "$PROFILEREAD" ; then
ENV=/etc/bash.bashrc
export ENV
fi

#
# Avoid overwriting user settings if called twice
#
if test -z "$PROFILEREAD" ; then
readonly PROFILEREAD=true
export PROFILEREAD
fi

#
# Standard ssh command does not do an login, therefore
# /etc/profile will be sourced by /etc/bash.bashrc
#
if test -z "$_SOURCED_FOR_SSH" ; then
#
# System BASH specials, maybe also good for other shells
# Note that ksh always reads /etc/ksh.kshrc
#
if test "$is" != ksh ; then
test -r /etc/bash.bashrc && . /etc/bash.bashrc
fi
if test -n "$restricted" ; then
readonly _HOMEBASHRC=true
fi
if test "$is" = "bash" -a -z "$_HOMEBASHRC" ; then
# loop detection
readonly _HOMEBASHRC=true
test -r $HOME/.bashrc && . $HOME/.bashrc
fi

#
# KSH specials
#
if test "$is" = "ksh" -a -r /etc/ksh.kshrc ; then
if test -n "$restricted" ; then
readonly _HOMEKSHRC=true
fi
if test ! /etc/bash.bashrc -ef /etc/ksh.kshrc ; then
test -r /etc/bash.bashrc && . /etc/bash.bashrc
fi
if test -n "$ENV" -a "$ENV" != "\$HOME/.kshrc" -a -z "$_HOMEKSHRC" ; then
# loop detection
readonly _HOMEKSHRC=true
test -r $HOME/.kshrc && . $HOME/.kshrc
fi
fi
fi
if test -n "$restricted" ; then
PATH=/usr/lib/restricted/bin
export PATH
fi
#
# End of /etc/profile
#


.................................................. ................

Ich kann alle .class Dateien im Konqueror öffnen, aber ich möchte sie auch per Konsole öffnen können ohne diese Fehlermeldung zu bekommen:


20:26 kaefer:~ > java HalloWelt
Exception in thread "main" java.lang.NoClassDefFoundError: HalloWelt
Caused by: java.lang.ClassNotFoundException: HalloWelt
at java.net.URLClassLoader$1.run(URLClassLoader.java: 200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.j ava:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:3 06)
at sun.misc.Launcher$AppClassLoader.loadClass(Launche r.java:276)
at java.lang.ClassLoader.loadClass(ClassLoader.java:2 51)
at java.lang.ClassLoader.loadClassInternal(ClassLoade r.java:319)


.............................................

Ich hoffe, ich habe alle wichtigen Infos zusammengetragen um abschließend folgende konkrete Fragen zu stellen:

a) was muss ich tun um den Befehl "javac" in der Konsole ausführen zu können?
b) was muss ich tun um den Befehl "java" in der Konsole ausführen zu können?
c) was muss ich tun um nicht ständig "netbeans --jdkhome <Verzeichnis zum jdk> angeben zu müssen?

Ich bin für jede Hilfe dankbar......

Netten Gruß
Sandra

kostjaXP
01.04.2008, 19:58
versuche ich ins Verzeichnis /usr/bin/ einen symbolischen Link zu setzen bekomme ich diese Meldung:


ln -s /opt/SUNWappserver/jdk/bin/java
ln: Erzeuge symbolische Verknüpfung „./java“: Die Datei existiert bereits


muss das nicht ein Link zu nem Verzeichnis sein?
also etwa
ln -s /opt/SUNWappserver/jdk/bin

??

gropiuskalle
01.04.2008, 20:31
Nun möchte ich aber nicht jedes mal diese Eingabe machen .............

Mal ganz schlicht gedacht: verwende doch einfach ein alias, z.B.:


alias blablubb="netbeans --jdkhome /opt/SUNWappserver/jdk"

Mehr zum sehr nützlichen Befehl alias steht » hier (http://www.pro-linux.de/t_shell/alias.html) «.

Und einen dauerhaften Eintrag in $PATH erreichst Du, indem Du die fertige ausführbare Datei nach $PATH kopierst. Müsste eigentlich doch auch bei Java-Kisten hinhauen.

bytepool
01.04.2008, 20:36
Hi,



a) was muss ich tun um den Befehl "javac" in der Konsole ausführen zu können?
b) was muss ich tun um den Befehl "java" in der Konsole ausführen zu können?


ich nehme an, du meinst wie du deine /etc/profile entsprechend anpassen kannst, so dass dein java bin immer direkt mit im PATH ist?

Falls du das meinst, ich wuerde die /etc/profile eigentlich ueberhaupt nicht anpassen, da es dir ja wahrscheinlich nur um deinen eigenen user geht, und nicht unbedingt um jeden user des systems.

Stattdessen wuerde ich den entsprechenden Eintrag am Ende deiner ~/.bashrc machen. Falls die Datei nicht existieren sollte, einfach anlegen.
Wie der Eintrag aussehen muss hast du ja selbst schon rausgefunden.

Wenn ich das noch richtig im Kopf habe, dann wird die ~/.bashrc fuer alle interaktiven (bash) shells aufgerufen, und die ~/.bash_profile fuer alle (bash) login shells.



c) was muss ich tun um nicht ständig "netbeans --jdkhome <Verzeichnis zum jdk> angeben zu müssen?

Du koenntest dir zum Beispiel einen alias fuer diesen Befehl definieren, netbhome, oder was weiss ich ;)
Ein alias ist eigentlich nur ein anderer Name fuer einen Befehl, du koenntest z.B. ebenfalls am Ende deiner ~./bashrc noch den Eintrag


alias netbhome='netbeans --jdkhome <Verzeichnis zum jdk>'

hinzufuegen.

Edit:


muss das nicht ein Link zu nem Verzeichnis sein?

Wie kommst du denn auf die lustige Idee? ;)

Aber zu dem Link, an Sandra, hast du mal geguckt welcher link da schon liegt? Er konnte das ja scheinbar nur nicht verlinken, weil der Link schon existiert. Also mal mit 'ls -l /usr/bin/java' schauen wohin der aktuelle Link zeigt.


mfg,
bytepool

bitmuncher
01.04.2008, 20:49
JAVA_BINDIR=/usr/lib/jvm/jre/bin
JAVA_HOME=/usr/lib/jvm/jre
JAVA_ROOT=/usr/lib/jvm/jre


Wie man ausserdem sieht hast du offenbar noch eine andere Java-Runtime installiert, worauf dein JAVA_HOME verweist und woher wahrscheinlich das Problem stammt, dass du den Link nicht erzeugen konntest. Du solltest einfach mal deine Umgebungsvariablen, die du brauchst, entsprechend in deine ~/.bashrc eintragen. Einfach folgendes in die Konsole eingeben:



cat >> ~/.bashrc << "EOF"
JAVA_HOME=/opt/SUNWappserver/jdk
JAVA_BINDIR=/opt/SUNWappserver/jdk/bin
JAVA_ROOT=/opt/SUNWappserver/jdk
PATH=/opt/SUNWappserver/jdk/bin:$PATH # haendisch installiertes Java bevorzugen
export PATH JAVA_ROOT JAVA_BINDIR JAVA_HOME


Alternativ löschst du das offenbar über den Paketmanager installierte JRE und verlinkst das händisch von dir installiert entsprechend in die notwendigen Pfade. Ersteres ist aber sicherlich der sauberere Weg.

Rain_Maker
01.04.2008, 21:59
Ich werde das Gefühl nicht los, daß dieses ganze Gewurschtel möglicherweise unnötig ist.

1. Die "netbeans" gibt es als fertiges RPM-Paket.

2. Wenn ein fertiges RPM vom Distributor bereitgestellt wird, dann werden damit i.d.R. auch alle Abhängigkeiten für die Funktionalität des Paketes vom Distributor bereit gestellt.

3. Das Paket netbeans liess sich per Paketmanager ohne Abhängigkeitsprobleme installieren.

4. So sehen die Abhängigkeiten des Pakets aus (10.2, aber das dürfte hier unwesentlich sein).



-qR netbeans
bash
java >= 1.5.0
rpmlib(VersionedDependencies) <= 3.0.3-1
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rpmlib(CompressedFileNames) <= 3.0.4-1
/bin/sh
rpmlib(PayloadIsBzip2) <= 3.0.5-1

5. Ein Blick in das spec-File der openSUSE Java-Pakete zeigt Folgendes.



Source0: jdk-6u%{javaminver}-dlj-linux-i586.sh
Daraus folgt, daß die Quelle schon Teile des Java Sun Development Kits enthalten könnte (und sehr wahrscheinlich auch enthalten wird).

6. Beschreibug des Paketes "java-1_6_0-sun":


Java(TM) 6 Runtime Environment

The Java(TM) 6 Runtime Environment contains the Java virtual machine,
runtime class libraries, and Java application launcher that are
necessary to run programs written in the Java progamming language. It
is not a development environment and does not contain development tools
such as compilers and debuggers. For development tools, see the
java-1.6.0-sun-devel package.

Beschreibung des Paketes "java-1_6_0-sun-devel"



The Java 6 SDK is a development environment for building applications,
applets, and components using the Java programming language.

The Java 6 SDK includes tools useful for developing and testing
programs written in the Java programming language and running on the
Java platform. These tools are designed to be used from the command
line. Except for the appletviewer, these tools do not provide a
graphical user interface.

Also stellt sich die Frage, welche extra-Funktionen (falls überhaupt vorhanden, ich nix JAVA-Progger) des J2EE-Paketes benötigt werden, die nicht schon in den Paketen des Distributors zu finden sind.

Greetz,

RM

Sandra
01.04.2008, 22:25
Hi,

ich bedanke mich für die vielen Antworten in so kurzer Zeit.

Netbeans habe ich selbstverständlich über den Paketmanager installiert..... auf www.netbeans.org wird aber zum betreiben dieses Programms J2EE empfohlen... Aber ich werde das nochmal prüfen RainMaker...

@bitmuncher

Ich habe alles so eingegeben wie du es vorgeschlagen hast... Trotzdem bekomme ich bei der Eingabe


java HalloWelt

die Fehlermeldung....

Ich habe jetzt mal ganz scharf nachgedacht....

Es ist doch so, dass ich einen CLASSPATH in meiner .bashrc angegeben habe... aber meine .class Datei auf die ich zugreifen will ist in einem ganz anderen Verzeichnis....

Somit müsste man doch eigentlich mit dem Befehl


java -cp

arbeiten

Doch ich weiß nicht wie man ihn zusammensetzt und aus der manpage werde ich nicht schlau.....

bytepool
01.04.2008, 22:48
Hi,

du kannst statt mit classpath zu arbeiten natuerlich auch einfach in das Verzeichnis mit den .class Dateien wechseln...
Aber ansonsten ist auch die Benutzung der -cp Option denkbar einfach:


java -cp /path/to/classes HalloWelt


mfg,
bytepool

Sandra
02.04.2008, 13:37
Also,

ich habe jetzt alles was ich an J2EE und netbeans habe deinstalliert und es nochmals aufgespielt.....

set | grep -i java

JAVA_BINDIR=/usr/local/java/jdk/bin
JAVA_HOME=/usr/local/java/jdk
JAVA_ROOT=/usr/local/java/jdk
PATH=/usr/local/java/jdk/bin:/opt/kde3/bin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/opt/hxtools/bin:/usr/X11R6/bin:/opt/gnome/bin

sieht jetzt so aus....

meine ~/.bashrc


#JAVA

JAVA_BINDIR=/usr/local/java/jdk/bin;
JAVA_HOME=/usr/local/java/jdk;
JAVA_ROOT=/usr/local/java/jdk;
PATH=/usr/local/java/jdk/bin:$PATH # haendisch installiertes Java bevorzugen
export PATH JAVA_ROOT JAVA_BINDIR JAVA_HOME
alias java=$JAVA_HOME/bin/java;
alias javac=$JAVA_HOME/bin/javac;
alias jar=$JAVA_HOME/bin/jar;

Wenn ich die .class Datei im Konqueror öffne funktioniert es perfekt


executing:
/usr/bin/java hallo.Hallo "":


Hallo Welt
Press key to exit ...


............ Allerdings verstehe ich nicht warum er auf /usr/bin/java zurückgreift .........

-> Ja, gebe ich in der Konsole javac Hallo.java ein funktioniert das compilieren ohne Probleme

-> Befinde ich mich im Verzeichnis der .class Datei und gebe java Hallo ein, bekomme ich immer wieder folgende Meldung:


Exception in thread "main" java.lang.NoClassDefFoundError: Hallo
Caused by: java.lang.ClassNotFoundException: Hallo
at java.net.URLClassLoader$1.run(URLClassLoader.java: 200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.j ava:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:3 06)
at sun.misc.Launcher$AppClassLoader.loadClass(Launche r.java:276)
at java.lang.ClassLoader.loadClass(ClassLoader.java:2 51)
at java.lang.ClassLoader.loadClassInternal(ClassLoade r.java:319)

.........Hm, ich verstehe die Meldung auch nicht wirklich ............

-> Meine Idee: Ich vermute, dass es Probleme gibt bei dem CLASSPATH; Netbeans speichert die .class Datei nicht in dem im PATH angegeben Verzeichnis /usr/local/java/jdk/bin

fällt jemandem noch was ein?

Netten Gruß
Sandra

PS: 2 von 3 Problemen sind schon gelöst :-)

bitmuncher
02.04.2008, 13:45
Liegt denn in "/usr/local/java/jdk/bin" der Interpreter?

Rain_Maker
02.04.2008, 13:53
Ein per Paketmanager eingespieltes Paket, welches sich an die SUSE Package Conventions hält, legt _nie_ etwas in /usr/local ab.

Also was hast Du da "wieder aufgespielt"?

Normalerweise sollten die Postinstall-Scriptlets eines offiziellen java-RPM von openSUSE die Verknüpfungen selbstständig anlegen, ansonsten gibt es noch das Programm "update-alternatives".

Greetz,

RM

Sandra
02.04.2008, 14:09
@bitmuncher

javac liegt im Verzeichnis /usr/local/java/jdk/bin

java liegt im Verzeichnis /usr/local/java/jdk/bin

meintes Du das?

@RainMaker

Netbeans habe ich per RPM aus dem Paketmanager installiert

http://www.netbeans.org/kb/60/java/quickstart.html


Gruß
Sandra

supersucker
02.04.2008, 14:11
Jetzt Moment mal.

Sandra, du bist dir auch sicher, das du eine J2EE JDK willst und brauchst?

Das wage ich ehrlich gesagt stark zu bezweifeln.

EE ist Enterprise Edition, wenn du mit Java erst anfängst (was mir "Hello World" Programme sagen), bist du mit dem Standard JDK - Paket deiner $Distribution ausreichend bedient.

Sandra
02.04.2008, 14:18
@supersucker

ich bin der Anleitung auf dieser Seite gefolgt...

http://www.netbeans.org/kb/60/java/quickstart.html

da wird J2SE nahegelegt.....

Bevor ich mir das ganze angelegt habe, habe ich auf dieser Seite

http://packages.opensuse-community.org/

nach JDK-Paketen ausschau gehalten... das benötigte wie in dem netbeans.org beschrieben ist nicht dabei....

Sandra


-------------- EDIT ------------------
rpm -qa | grep -i netbeans


netbeans-j2ee-6.0.1-5.1
netbeans-java-6.0.1-5.1
netbeans-6.0.1-5.1

Rain_Maker
02.04.2008, 14:19
which java

/usr/bin/java

ls -ls $(which java)
0 lrwxrwxrwx 1 root root 22 22. Dez 2006 /usr/bin/java -> /etc/alternatives/java

ls -ls /etc/alternatives/java
0 lrwxrwxrwx 1 root root 42 1. Apr 23:26 /etc/alternatives/java -> /usr/lib/jvm/jre-1.6.0.u5.sr1-sun/bin/java

rpm -qf /usr/lib/jvm/jre-1.6.0.u5.sr1-sun/bin/java

java-1_6_0-sun-1.6.0.u5-1

which javac

/usr/bin/javac

ls -ls $(which javac)

0 lrwxrwxrwx 1 root root 23 6. Jan 22:10 /usr/bin/javac -> /etc/alternatives/javac

-ls /etc/alternatives/javac
0 lrwxrwxrwx 1 root root 44 1. Apr 23:26 /etc/alternatives/javac -> /usr/lib/jvm/java-1.6.0.u5.sr1-sun/bin/javac

rpm -qf /usr/lib/jvm/java-1.6.0.u5.sr1-sun/bin/javac

java-1_6_0-sun-devel-1.6.0.u5-1

supersucker
02.04.2008, 14:29
@supersucker

ich bin der Anleitung auf dieser Seite gefolgt...

http://www.netbeans.org/kb/60/java/quickstart.html

da wird J2SE nahegelegt.....

Ist in deinem Fall völliger Overkill und brauchst du nicht.

Empfohlen wird es, wenn du EE-Applikationen entwickeln willst.

Und das willst du glaube ich nicht....

Ich an deiner Stelle würde erst mal dein Installationschaos beseitigen (WTF macht den Java in /usr/local?) => alles deinstallieren.

Dann das von RM empfohlene Paket java 1.6.installieren. Kriegst du über deinen Paketmanager.

Und dann solltest du erstmal mächtig viel lesen:

Sehr empfehlenswert:

-> http://www.galileodesign.de/openbook/javainsel6/

Für dein HelloWorld Problem:

Es reicht völlig aus JAVA_HOME zu setzen.

Dann

javac HelloWorld.java

und ausführen:

java HelloWorld

gropiuskalle
02.04.2008, 14:30
Ich will mal zwei wie ich finde wichtige Einwürfe von Rain_Maker etwas deutlicher herausstreichen:


2. Wenn ein fertiges RPM vom Distributor bereitgestellt wird, dann werden damit i.d.R. auch alle Abhängigkeiten für die Funktionalität des Paketes vom Distributor bereit gestellt.


Ein per Paketmanager eingespieltes Paket, welches sich an die SUSE Package Conventions hält, legt _nie_ etwas in /usr/local ab.

Die Quellen sind also nicht ganz unwichtig.

Sandra
02.04.2008, 15:00
Problem 3 von 3 jetzt auch gelöst!

Es war mein Fehler, dass ich beim Aufruf von java Hallo im Verzeichnis der .class Datei stand... Der korrekte Befehl musste sein java hallo/Hallo

Ich bedanke mich für die rege Anteilnahme und der vielen Tipps......

Dieser Thread gilt als GELÖST.....

Gruß
Sandra

PS: Ich kann eure Kritik die Ihr geäußert habt verstehen, aber HalloWelt ist nur der Anfang und es sollen Projekte folgen

PPS: Ich habe Bücher über Java nach denen ich lerne www.grundkurs-java.de. Vielen Dank für den Buchtipp der hier gegeben worden ist.....

Special Thanks to espo