Sandra
Tripel-As
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 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
Also bin ich dem Rat gefolgt und habe in der Konsole
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
Wie man sieht fehlen die JDK Einträge
versuche ich ins Verzeichnis /usr/bin/ einen symbolischen Link zu setzen bekomme ich diese Meldung:
........... O.K. weiter gedacht .........................
dann habe diese Eingabe versucht:
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:
..................................................................
Ich kann alle .class Dateien im Konqueror öffnen, aber ich möchte sie auch per Konsole öffnen können ohne diese Fehlermeldung zu bekommen:
.............................................
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
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 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
Also bin ich dem Rat gefolgt und habe in der Konsole
Code:
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:
Code:
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:
Code:
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:
Code:
# /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:
Code:
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.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:276)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.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