ubuntuusers.de

JAVA_HOME nur als USR

Status: Gelöst | Ubuntu-Version: Nicht spezifiziert
Antworten |

Adreamus

Anmeldungsdatum:
29. April 2008

Beiträge: 25

Guten Tag,

Ich habe mein JAVA_HOME in der /etc/profile festgelegt.

...

JAVA_HOME=/usr/lib/jvm/java-6-sun-1.6.0.06
PATH=$PATH:${JAVA_HOME}/bin
export PATH JAVA_HOME

umask 022

Soweit so gut, als Standartbenutzer funktioniert es auch.

xy@z-desktop:~$ $export $JAVA_HOME
bash: /usr/lib/jvm/java-6-sun-1.6.0.06: is a directory

Auch Fullsync lässt sich starten:

xy@z-desktop:~$ sh ~/.FullSync/bin/fullsync.sh
FULLSYNC_HOME = /home/marc/.FullSync

Wenn ich jedoch das ganze als SUDO versuche (da ich Dateien synchronisieren will, auf welche nur von SUDO zugegriffen werden kann) kommt folgende Fehlermeldung:

xy@z-desktop:~$ sudo $export $JAVA_HOME
sudo: /usr/lib/jvm/java-6-sun-1.6.0.06: command not found

Auch der Befehl export scheint nicht bekannt:

xy@z-desktop:~$ sudo export
sudo: export: command not found

Garnicht läuft zudem FullSync:

xy@z-desktop:~$ sudo sh ~/.FullSync/bin/fullsync.sh
FULLSYNC_HOME = /home/marc/.FullSync
Error: JAVA_HOME is not defined correctly.
We cannot execute java

Wie kann das sein? Gibt es irgendwo eine .profile/(bash.bashrc) für sudo? Wenn ja hab ich sie nirgends gefunden (auch nicht im Verzeichnis "/root")

Wäre sehr nett, wenn ihr mir weiterhelfen könntet ☺

LG Adreamus

ps: Unter Ubuntu 7.10 hat es einwandfrei auch als sudo funktioniert; das Problem hier tritt erst seid der Installation von HARDY auf!

floogy

Anmeldungsdatum:
21. Juli 2006

Beiträge: 3297

Wohnort: Koblenz

Du exportierst falsch:

export BLAH=blub
echo $BLAH

$JAVA_HOME enthält den Pfad zur Variable JAVA_HOME. Die variable $export wird leer sein. Der Befehl heißt export.

Daher auch die Fehlermeldung bashs, die Du falsch als Erfolg verbucht hast:

xy@z-desktop:~$ $export $JAVA_HOME
bash: /usr/lib/jvm/java-6-sun-1.6.0.06: is a directory

DieFehlermeldung kommt auch wenn Du den Pfad ohne Programm und argument eingibst:

~$ /usr/lib/jvm/java-6-sun-1.6.0.06
bash: /usr/lib/jvm/java-6-sun-1.6.0.06: is a directory

Es ist "gehupft wie gesprungen", und sinnlos.

sudo hat hier afair nichts verloren.

Adreamus

(Themenstarter)

Anmeldungsdatum:
29. April 2008

Beiträge: 25

trotzdem ist es verwirrend, dass sich JAVA als Standartbenutzer ausführen lässt und als SUDO nicht. Wieso das?

/edit:

export $JAVA_HOME
bash: export: /usr/lib/jvm/java-6-sun-1.6.0.06': not a valid identifier

floogy

Anmeldungsdatum:
21. Juli 2006

Beiträge: 3297

Wohnort: Koblenz

versuche mal:

export JAVA_HOME=/usr/lib/jvm/java-6-sun-1.6.0.06

oder eben:

JAVA_HOME=/usr/lib/jvm/java-6-sun-1.6.0.06
PATH=$PATH:${JAVA_HOME}/bin
export PATH JAVA_HOME

Auch der Befehl export scheint nicht bekannt:

xy@z-desktop:~$ sudo export
    sudo: export: command not found

root hat seine eigene ~/.bashrc

sudo -i
export

Adreamus

(Themenstarter)

Anmeldungsdatum:
29. April 2008

Beiträge: 25

ja ich hab mein /etc/profile schon geändert zu

...

export JAVA_HOME=/usr/lib/jvm/java-6-sun-1.6.0.06

umask 022

Jedoch lässt sich FullSync trotzdem nur als Standarduser und nicht als SUDO ausführen...

Übrigens: der 'export' Befehl war falsch 😀 ich wollte eigentlich echo schreiben... 😳

floogy

Anmeldungsdatum:
21. Juli 2006

Beiträge: 3297

Wohnort: Koblenz

Das $HOME von root ist /root, daher muss JAVA_HOME wohl in der /root/.bashrc definiert sein, um mit sudo java auszuführen(?)
Allerdings ist die /etc/profile ja systemweit, hmmm...

floogy

Anmeldungsdatum:
21. Juli 2006

Beiträge: 3297

Wohnort: Koblenz

Adreamus hat geschrieben:

ja ich hab mein /etc/profile schon geändert zu

export JAVA_HOME=/usr/lib/jvm/java-6-sun-1.6.0.06

Ist wohl eher richtig so:

JAVA_HOME=/usr/lib/jvm/java-6-sun-1.6.0.06
PATH=$PATH:${JAVA_HOME}/bin
export PATH JAVA_HOME

bzw.:

export JAVA_HOME=/usr/lib/jvm/java-6-sun-1.6.0.06
export PATH=$PATH:${JAVA_HOME}/bin

Adreamus

(Themenstarter)

Anmeldungsdatum:
29. April 2008

Beiträge: 25

ja ich wunder mich, da bei mir /root/bash.bashrc nicht vorhanden ist...

floogy

Anmeldungsdatum:
21. Juli 2006

Beiträge: 3297

Wohnort: Koblenz

ls /root/.bashrc


Was sagt denn

sudo -i
echo $JAVA_HOME

Hier:

~$ sudo -i
root@ubuntu:~ # echo $JAVA_HOME
/usr/lib/j2sdk1.5-sun/
root@ubuntu:~ #

Adreamus

(Themenstarter)

Anmeldungsdatum:
29. April 2008

Beiträge: 25

xy@z-desktop:~$ ls /root/.bashrc
ls: Zugriff auf /root/.bashrc nicht möglich: No such file or directory

xy@z-desktop:~$ sudo -i
root@z-desktop:~# echo $JAVA_HOME
/usr/lib/jvm/java-6-sun-1.6.0.06

Komischerweise geht:

root@z-desktop:~# sh /home/z/.FullSync/bin/fullsync.sh
FULLSYNC_HOME = /home/z/.FullSync

ABER:

xy@z-desktop:~$ sudo sh .FullSync/bin/fullsync.sh
FULLSYNC_HOME = /home/z/.FullSync
Error: JAVA_HOME is not defined correctly.
We cannot execute java

Woran kann das liegen?

floogy

Anmeldungsdatum:
21. Juli 2006

Beiträge: 3297

Wohnort: Koblenz

sudo -i 
echo $PATH

Dass Du keine .bashrc für root hast finde ich merkwürdig, soll das so sein? Ich habe immer dist-upgrades gemacht, daher weiß ich nicht, ob das inzwischen anders ist (vielleicht ist sie bei mir ein Relikt).
Ich denke aber sie sollte da sein.

Adreamus

(Themenstarter)

Anmeldungsdatum:
29. April 2008

Beiträge: 25

ja ist echt verwirrend 👿

root@z-desktop:~# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11R6/bin:/usr/lib/jvm/java-6-sun-1.6.0.06/bin

floogy

Anmeldungsdatum:
21. Juli 2006

Beiträge: 3297

Wohnort: Koblenz

Ich habe nun mal versucht FullSync zu installieren, was auch geklappt hat, nur läuft es nicht, da classes.zip nicht gefunden wird:

~$  /home/$USER/FullSync/bin/fullsync.sh
FULLSYNC_HOME = /home/gerhard/FullSync
~$
 strace /home/$USER/FullSync/bin/fullsync.sh 
[...]
stat("/usr/lib/jvm/java-6-sun-1.6.0.06//lib/tools.jar", {st_mode=S_IFREG|0644, st_size=12480706, ...}) = 0
stat("/usr/lib/jvm/java-6-sun-1.6.0.06//lib/classes.zip", 0x7fff837e24a0) = -1 ENOENT (No such file or directory)
clone(child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x7f0c7b7aa770) = 32372
wait4(4294967295, [{WIFEXITED(s) && WEXITSTATUS(s) == 1}], 0, NULL) = 32372
--- SIGCHLD (Child exited) @ 0 (0) ---
read(10, "", 8192)                      = 0
exit_group(1)                           = ?
Process 32364 detached

In welchem Paket ist clases.zip enthalten? slocate und dpkg -S finden nichts.

http://packages.ubuntu.com/search?searchon=contents&keywords=classes.zip&mode=exactfilename&suite=hardy&arch=any
findet nur das Paket jamvm

Eventuell ist FullSync nur mit java-5 lauffähig?

Adreamus

(Themenstarter)

Anmeldungsdatum:
29. April 2008

Beiträge: 25

äähm nein...es läuft ja bei mir... nur nicht als sudo :-/

mit classes.zip hatte ich keine Probleme

hast du es über diese JAR-Datei installiert?

achso Java hab ich

1. sun-java6-jre
2. sun-java6-bin

installiert 😉

floogy

Anmeldungsdatum:
21. Juli 2006

Beiträge: 3297

Wohnort: Koblenz

Ja, aber:

~$ find /usr/lib/j*  -iname '*classes*'
/usr/lib/jvm/ia32-java-6-sun-1.6.0.06/jre/lib/i386/client/classes.jsa
/usr/lib/jvm/java-6-sun-1.6.0.06/com/sun/org/apache/bcel/internal/classfile/InnerClasses.java

Kein classes.zip, nirgends...

$ dpkg -l sun*java*|grep ^ii|awk '{print $2}'
sun-java5-bin
sun-java5-fonts
sun-java5-jre
sun-java6-bin
sun-java6-jdk
sun-java6-jre
sun-java6-source

Was sagt bei Dir denn folgendes:

ls -l /usr/lib/jvm/java-6-sun-1.6.0.06//lib/classes.zip
sudo updatedb
locate classes.zip

EDIT: Ok classes.zip scheint in $FULLSYNC_HOME/lib/*.jar enthalten zu sein (?):

# add in the dependency .jar files
DIRLIBS=$FULLSYNC_HOME/lib/*.jar
for i in ${DIRLIBS}
do
    # if the directory is empty, then it will return the input string
    # this is stupid, so case for it
    if [ "$i" != "${DIRLIBS}" ] ; then
      if [ -z "$LOCALCLASSPATH" ] ; then
        LOCALCLASSPATH=$i
      else
        LOCALCLASSPATH="$i":$LOCALCLASSPATH
      fi
    fi
done

EDIT, Nein das kann auch nicht sein, denn:

if [ -n "$JAVA_HOME" ] ; then
  if [ -f "$JAVA_HOME/lib/tools.jar" ] ; then
    LOCALCLASSPATH=$LOCALCLASSPATH:$JAVA_HOME/lib/tools.jar
  fi

  if [ -f "$JAVA_HOME/lib/classes.zip" ] ; then
    LOCALCLASSPATH=$LOCALCLASSPATH:$JAVA_HOME/lib/classes.zip
  fi

else
  echo "Warning: JAVA_HOME environment variable is not set."
  echo "  If build fails because sun.* classes could not be found"
  echo "  you will need to set the JAVA_HOME environment variable"
  echo "  to the installation directory of java."
fi

Es hat eher nichts mit $JAVA_HOME/lib/classes.zip zu tun, denn LOCALCLASSPATH=$LOCALCLASSPATH:$JAVA_HOME/lib/tools.jar, da tools.jar ja gefunden wird.
Weshalb weiter nichts passiert, und fullsync abstürzt weiß ich nicht.

EDIT:
Ich glaube ich weiß nun woran es liegt:

Seit dem update auf hardy haben meine javaprogramme keinen Zugriff aufs Internet mehr:

$ $JAVA_HOME/bin/java -classpath "/home/$USER/FullSync/lib:$JAVA_HOME/lib/tools.jar" -Djava.library.path="/home/gerhard/FullSync/lib" net.sourceforge.fullsync.cli.Main "$@"
Exception in thread "main" java.lang.NoClassDefFoundError: net/sourceforge/fullsync/cli/Main
Caused by: java.lang.ClassNotFoundException: net.sourceforge.fullsync.cli.Main
	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)
Exception in thread "main" java.lang.NoClassDefFoundError: net/sourceforge/fullsync/cli/Main
Caused by: java.lang.ClassNotFoundException: net.sourceforge.fullsync.cli.Main

net.sourceforge.fullsync.cli.Main ist ja eine Internetresource!

Antworten |