Java Development Kit Installation

Sandra

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

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
 
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

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

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

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

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

Mehr zum sehr nützlichen Befehl alias steht » hier «.

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.
 
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
Code:
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
 
Zuletzt bearbeitet:
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:

Code:
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.
 
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).

Code:
-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.

Code:
Source0:        [B]jdk[/B]-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
 
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

Code:
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

Code:
java -cp

arbeiten

Doch ich weiß nicht wie man ihn zusammensetzt und aus der manpage werde ich nicht schlau.....
 
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:
Code:
java -cp /path/to/classes HalloWelt

mfg,
bytepool
 
Also,

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

set | grep -i java
Code:
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

Code:
#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
Code:
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:

Code:
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.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)

.........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 :-)
 
Liegt denn in "/usr/local/java/jdk/bin" der Interpreter?
 
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
 
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.
 
@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
Code:
netbeans-j2ee-6.0.1-5.1
netbeans-java-6.0.1-5.1
netbeans-6.0.1-5.1
 
Code:
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

[B]java-1_6_0-sun-1.6.0.u5-1[/B]

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

[B]java-1_6_0-sun-devel-1.6.0.u5-1[/B]
 
@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
 
Zuletzt bearbeitet:
Ich will mal zwei wie ich finde wichtige Einwürfe von Rain_Maker etwas deutlicher herausstreichen:

Rain_Maker schrieb:
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.

Rain_Maker schrieb:
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.
 
Zuletzt bearbeitet:
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
 

Ähnliche Themen

Nginx als Reverse Proxy für Nextcloud und Emby

Zugriff Ubuntu 16.04. auf Freigabe 18.04. LTS nicht möglich

Crontab und Scripts - Problem

Port generieren, wenn nicht dann

[Gelöst] Suchen und ersetzen mit Hilfe mehrerer Parameter

Zurück
Oben