ubuntuusers.de

Du betrachtest eine alte Revision dieser Wikiseite.

Tipps

Dieser Artikel soll Tipps und Hilfestellung bei Problemen im Umgang mit Java geben.

⚓︎

Verwendete Java-Version einstellen

Eines der häufigsten Einsteigerprobleme: es ist möglich, mehrere verschiedene Java-Versionen nebeneinander zu installieren. Welche Version tatsächlich gerade systemweit benutzt wird (immer nur eine!), kann mit Hilfe des Alternativen-Systems herausgefunden werden.

Für das "normale" Java (JRE):

sudo update-alternatives --config java 

Für das Entwickler-Kit (SDK):

sudo update-alternatives --config javac 

Nun werden die Alternativen (wenn vorhanden) nummeriert ausgegeben. Erfolgt keine Ausgabe, ist Java nicht installiert. Anschließend kann man durch Eingabe der entsprechenden Nummer die entsprechende Variante einstellen, die standardmäßig verwendet werden soll.

Java wird nicht gefunden

In manchen Fällen kann es vorkommen, dass Java-Programme nach der Installation nicht ausgeführt werden können. Man erhält dann im Terminal nur die Nachricht

bash: java: command not found

Dies liegt an einer fehlerhaften Verknüpfung. Um dies zu beheben, öffnet man ein Terminal [1] und legt die Verknüpfung in /usr/bin korrekt an:

cd /usr/bin
sudo rm java
sudo ln -s /etc/alternatives/java java 

Danach sollte Java wieder starten.

Java & Desktop-Effekte

Es kann vorkommen, dass grafische Java-Applikationen nicht korrekt dargestellt werden, wenn die Desktop Effekte aktiviert sind. Die Applikation wird dabei zwar gestartet, jedoch wird außer einem leeren, grauen Fenster nichts angezeigt. Ruft man die selbe Java-Anwendung auf, wenn die Desktop Effekte deaktiviert sind, so wird der Inhalt (Schaltflächen, Eingabefelder, ...) einwandfrei angezeigt. Dieses Problem lässt sich für alle (?) Java Versionen leicht lösen:

Java 6

Für die neueste Version von Java gibt es einen einfachen Lösungsweg. Dazu öffnet man die Datei /etc/environment mithilfe eines Editors [2] mit Root-Rechten [3] und fügt am Ende der Datei die folgende Zeile hinzu:

AWT_TOOLKIT="MToolkit"

Um die Einstellung sofort zu übernehmen, kann entweder die Umgebungsvariable durch Eingabe von

export AWT_TOOLKIT="MToolkit"

gesetzt werden oder die grafische Oberfläche neu gestartet (ab- und wieder anmelden) werden.

⚓︎

Java-Plugin für Browser aktivieren

Hinweis:

Dieses Verfahren ist nur dann notwendig, wenn man Java nicht als fertiges Ubuntu-Paket (mit Browser-Plugin) installiert hat.

Damit die gewünschte Java-Version benutzt werden kann, muss ein Link zu einem entsprechenden Plugin für den verwendeten Browser gesetzt werden. Möglicherweise ist noch das Plugin einer älteren/anderen Java-Version vorhanden. Daher sollte man zunächst das Plugin-Verzeichnis des Browsers überprüfen und veraltete Links löschen.

Ein Java Browser-Plugin hat immer die Endung .so (Shared Object), was bedeutet, dass dies eine Programmbibliothek ist, die sich mehrere Programme teilen können. In der Regel heißt das Java-Plugin libjavaplugin_oji.so. Je nach verwendeter Java-Version (Sun, Blackdown ...) befindet sich das Plugin an anderer Stelle im Dateisystem. Am leichtesten lässt sich der Speicherort mit dem folgenden Befehl im Terminal [1] herausfinden:

update-alternatives --list java 

Die Ausgabe sieht dann beispielsweise so aus:

/usr/bin/gij-wrapper-4.1
/usr/lib/jvm/java-6-sun/jre/bin/java
/usr/lib/j2se/1.4/bin/java

Der erste Eintrag zeigt den Pfad zum standardmäßig installierten GNU-Java. Die beiden weiteren Pfade zeigen jeweils auf eine JVM von Sun: der zweite zeigt auf die JVM von Sun Java 6, der dritte steht für die JVM von Blackdown. Für den Browser wird aber nicht die JVM, sondern ein Plugin benötigt. Am einfachsten ist es, den Dateimanager zu öffnen und hier dem angegebenen Pfad zu folgen, bis man auf das Verzeichnis plugin stößt. Hier befindet sich in der Regel die o.g. Datei. Vollständige Pfade zum Plugin kann man den unten angegebenen Befehlen entnehmen.

Möchte man nun eines der Plugins mit dem Browser Firefox verlinken, so muss man zunächst den korrekten Pfad heraussuchen und anschließend mit dem Befehl ln im Terminal [1] den Link zum Plugin-Verzeichnis des Browsers setzen.

Für Sun Java 6 sähe der Link zum Beispiel folgendermaßen aus:

sudo ln -sf /usr/lib/jvm/java-6-sun/jre/plugin/i386/ns7/libjavaplugin_oji.so /usr/lib/firefox/plugins/ 

Für Blackdown Java sieht der Link folgendermaßen aus:

sudo ln -sf /usr/lib/j2se/1.4/jre/plugin/i386/mozilla/libjavaplugin_oji.so /usr/lib/firefox/plugins/ 

Für OpenJDK Java sieht der Link folgendermaßen aus:

sudo ln -sf /usr/lib/jvm/java-6-openjdk/jre/lib/i386/gcjwebplugin.so /usr/lib/firefox/plugins/ 

Dies sind natürlich nur Beispiele. Bei anderen Versionen von Java muss der Befehl angepasst werden.

⚓︎

32bit-Java-Programme

Wiki/Icons/ubuntu64.png Zwar gibt es nicht viele Fälle, aber es kommt vor, dass man ein 32bit-Java-Programm ausführen muss, das zwingend eine 32Bit-Version von Java voraussetzt (z.B. Wuala). Dies kann jedoch parallel zur 64bit-Version erfolgen, d.h. für Java-Anwendungen, die nicht im Browser laufen, kann die 64bit-Version weiter genutzt werden.

Daher muss auf einer 64Bit-Installation von Ubuntu zuerst eine 32bit-Version von z.B. Sun Java heruntergeladen ⮷ ("Linux (selbstextrahierende Datei)", nicht RPM), ausführbar [4] gemacht und ausgeführt [5] werden. Wird man nach dem Zielpfad gefragt, wählt man ein separates (beliebiges) Verzeichnis - so können auch bereits bestehende Java-Versionen nebeneinander installiert werden. Dadurch wird ein neues Verzeichnis, beginnend mit jre, erstellt.

Nun lässt sich das auszuführende 32bit-Java-Programm wie Wuala über einen Befehl, den man im Terminal [1] eingibt oder sich z.B. als Programmstarter einrichtet, starten (die Verzeichnis-Pfade müssen entsprechend des Installationsortes vom oben angegebenen Verzeichnis der JRE und des Programmverzeichnisses angepasst werden):

/home/benutzer/jre*/bin/java -jar /home/benutzer/wuala/wuala 

32bit-Browser

Die Konfiguration im Browser ist hier am Beispiel von Opera gezeigt: im Menü "Tools → Preferences → Advanced → Content" gibt man mit "Java options..." den Pfad der zuvor installierten Java-Version an (z.B. /home/apps/jre1.5.0_06/lib/i386) und setzt danach das Häkchen bei "Enable Java". Nach einem Neustart des Browsers sollten dann Java-Applets funktionieren.

⚓︎

Programme beschleunigen

Man sollte zuerst die Dokumentation des Programms studieren, und die Entwickler fragen, wie man mit Performance-Problemen am besten umgeht. In manchen Fällen können die folgenden Tipps sinnvoll sein - ein Wundermittel gibt es nicht.

Als Beispielaufruf sei der Befehl

java -jar meinLieblingsJavaProgramm.jar 

gegeben. Auf unixoiden Systemen wird nicht automatisch die OpenGL-Beschleunigung verwendet. Um diese einzuschalten - was nur bei 2D- oder 3D-Grafikausgaben Sinn macht - verwendet man den Parameter -Dsun.java2d.opengl=true (siehe System Properties for All Platforms 🇬🇧 / Support for Hardware-Accelerated Rendering Using OpenGL 🇬🇧 ):

java -Dsun.java2d.opengl=true -jar meinProgramm.jar 

Je nach Rechnerarchitektur (z.B. 64-Bit-System) wird als Standard (siehe Server-Class Machine Detection 🇬🇧 ) die Server-JVM verwendet. Um die für Client-Anwendungen optimierte JVM zu verwenden, muss man auf solchen Systemen explizit den Parameter -client angeben:

java -client -jar meinProgramm.jar 

Es hängt dabei von der verwendeten JVM ab, ob eine Client-JVM für 64-Bit verfügbar ist. Suns 5.0 64-Bit JVM scheint noch keine Client-VM zu unterstützen, der Parameter schadet aber nicht. Insofern sollte jede grafische Anwendung mit dem Parameter -client gestartet werden.

In manchen Fällen begrenzt der Speicherbedarf die Geschwindigkeit eines Programms. Die Voreinstellung für die JVM ist 64 MB. Mehr Geschwindigkeit kann man herausholen, indem man der Anwendung mehr als die maximalen 64 MB zur Verfügung stellt. Hierzu dient der Parameter -Xmx:

java -Xmx256m -jar meinLieblingsJavaProgramm.jar 

Das hat aber nur einen Effekt, wenn das System durch häufiges Laufen der Garbage Collection belastet wird, und diese läuft nur, wenn es nötig ist. Benötigt die Anwendung weniger Speicher, so entzieht man diesen nur sinnlos dem restlichen System.

Man auch mehrere Optionen miteinander kombinieren:

java -client -Xmx256m -Dsun.java2d.opengl=true -jar mein2DProgramm.jar 

Diese und weitere Parameter sind auch in den Java options 🇬🇧 erläutert.

Java WebStart

Es kann vorkommen, dass eine Java WebStart-Anwendung zwar mit dem Java-Startbildschirm startet, dann aber nach langem Warten nur eine Fehlermeldung erscheint:

java.net.MalformedURLException: unknown protocol: 
....

Dieser Fehler liegt in den Proxy-Einstellungen von Java. Um den Fehler zu beheben, muss man unter GNOME System → Einstellungen → Sun Java 6 Plugin Control Center öffnen und dort in den Netzwerkeinstellungen "Direkte Verbindung" auswählen bzw. die korrekten Proxy-Einstellungen machen. Die automatische Proxy-Auswahl über den Browser funktioniert nicht.

Online Java-Applets für den Offline-Gebrauch herunterladen

Will man ein auf einer Webseite gefundenes Java-Applet auch offline nutzen können, ohne das dieses auf der Homepage explizit zum Download angeboten wird, hilft folgendes Vorgehen:

1. Die aufgerufene Webseite lokal speichern

2. Java-Code im Quelltext suchen

Man öffnet die heruntergeladene .html-Datei mit einem Texteditor [2] und sucht den Code, der das Java-Applet aufruft. Dieser könnte in etwa so aussehen:

<applet archive="../../test/jarfile1.jar, jarfile2.jar" code="classfile1.class" width="340" height="80" vspace="0" hspace="20" align="RIGHT" > 

3. Die angegebenen Abhängigkeiten herunterladen

Die Dateien, die unter "archive=" und "code=" angeben sind, müssen nun herunter geladen werden. Ihre Pfade sind relativ zu dem Pfad der .html-Datei angegeben, in der sich der Code für das Java-Applet befindet (Beispiel: für die Datei jarfile1.jar muss man also zwei Ordner nach oben und dann in den Unterordner test wechseln). Man ermittlet die Pfade der Dateien und gib diese jeweils in die Adresszeile des Browsers ein. Da dieser .jar- und .class-Dateien nicht öffnen kann, werden sie zum Herunterladen angeboten. Man speichert sie alle im gleichen Ordner wie die .html-Datei.

4. Dateipfade anpassen

Nun müssen in der .html-Datei noch die Dateipfade angepasst werden, da sich ja nun alle Dateien im selben Ordner befinden. Aus dem obigen Beispiel wird also

<applet archive="jarfile1.jar, jarfile2.jar" code="classfile1.class" width="340" height="80" vspace="0" hspace="20" align="RIGHT" > 

Danach wird die .html-Datei gespeichert und geschlossen. Anschließend kann das Applet durch Öffnen der Webseite in einem Browser gestartet werden - vorausgesetzt, ein passendes Java Browser-Plugin ist installiert.

JAVA_HOME einstellen

Für manche Umgebungen wie z.B. Tomcat Jetty Geronimo (JSP, Servlets, JSF) muss die Umgebungsvariablen für alle Nutzer gesetzt werden. Zusätzlich muss J2SE JDK installiert sein.

Zuerst muss man nachsehen, wo der bin-Ordner von Java für javac, javadoc u.a. ist:

ls -la /etc/alternatives/javac 

zum Beispiel

/etc/alternatives/javac -> /usr/lib/jvm/java-1.5.0-sun/bin/javac

Nun muss die Environment-Einstellung für alle Nutzer eingestellt werden. Dafür die Datei /etc/environment in einem Editor [2] mit Root-Rechten öffnen [3] und dies eintragen:

#Pfad zum Java SDK-Basis-Ordner - kein Slash am Ende!
JAVA_HOME=/usr/lib/jvm/java-1.5.0-sun

Anschließend abmelden und neu anmelden.


Diese Revision wurde am 17. März 2010 13:51 von aasche erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Internet, Programmierung, Java, ungetestet