EXAplus
EXAplus und JAVA
Wahlmöglichkeiten bei der Installation:
EXAplus kann mit oder ohne Java-Laufzeitumgebung installiert werden. Wenn die Java-Laufzeitumgebung mitinstalliert wird, befindet sie sich dem Unterordner jre im EXAplus-Installationsverzeichnis.
Wahl von Java bei der Ausführung:
Bei der Ausführung von EXAplus wird zuerst geprüft, ob ein Unterverzeichnis jre im EXAplus-Installationsverzeichnis existiert, welches eine Java-Laufzeitumgebung beherbergt.
Wenn dieses nicht existiert, wird unter Windows die Registry abgefragt und dort eine geeignete Laufzeitumgebung gesucht. Unter Linux wird 'java' im aktuellen Pfad ($PATH) erwartet.
EXAplus und die WindowsRegistry:
Bei einer Java-Installation mit der Installationssoftware von Sun erzeugt man einen Eintrag
(HKLM)\SOFTWARE\JavaSoft\Java Runtime Environment\1.6.0\JavaHome
oder
(HKLM)\SOFTWARE\JavaSoft\Java Development Kit\1.6.0\JavaHome
abhängig davon, ob man eine Laufzeit- oder Entwicklungsumgebung installiert.
EXAplus findet und benutzt unter den in der WindowsRegistry angegebenen Java-Laufzeitumgebungen die neuste (höchste Versionsnummer).
Aus dem Eintrag in der WindowsRegistry wird der entsprechende Pfad für den Java-Aufruf genommen.
Wie kommt es, dass EXAplus kein Java findet?
EXAplus benötigt eine JRE entweder im Unterverzeichnis jre oder in einem in der WindowsRegistry eingetragenen Pfad, bzw. das Programm 'java' im aktuellen Suchpfad ($PATH).
Dabei muss die JRE, die sich in der WindowsRegistry befindet, eine entsprechende Mindest-Version besitzen (um aktuellen Zeitpunkt ist dies 1.5 oder größer).
Java ist im System installiert, aber EXAplus startet nicht
- Ist die im System installierte Java-Laufzeitumgebung 1.5 oder neuer?
Lösung: Java 1.5 oder neuer ist zwingend erforderlich.
- Wurde die Java-Laufzeitumgebeung mittels Installer installiert? Befindet sich in der WindowsRegistry ein Eintrag HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment\1.X.0\JavaHome mit X >= 5?
Lösung: Java-Laufzeitumgebung mit Installer installieren, Java-Laufzeitumgebung in Unterverzeichnis jre von EXAplus kopieren, den Wert manuell in die Registry eintragen oder EXAplus manuell startet. Wenn die oberen Fragen nicht greifen, dann kann eine Fehlersuche mit folgendener Frage eingeleitet werden. - Ich habe ein passendes Java, aber es nicht in der WindowsRegistry
Lösung: EXAplus kann auch manuell ausgeführt werden mit dem folgendem Befehl
$JRE/java.exe -jar $EXAPLUS/exaplus.jar -g
Dabei bezeichnet $JRE den Pfad zum Java und $EXAPLUS den Pfad in dem EXAplus installiert wurde.
Auf der Konsole werden gegebenenfalls Debug-Informationen ausgegeben, die in der Regel ignoriert werden können.
Sollte man EXAplus im Konsolenmodus starten wollen, d.h. ohne "-g", dann ist es notwendig das Encoding der Konsole mit anzugeben, da sonst Sonderzeichen nicht richtig erkannt werden. Beim Starten per EXAplus.exe wird dieser Wert automatisch festgestellt.
Für ein japanisches Windows erhält man den Befehl:
$JRE/java.exe -Djline.WindowsTerminal.input.encoding=MS932 -jar $EXAPLUS/exaplus.jar
Für ein deutsches Windows bekommt man
$JRE/java.exe -Djline.WindowsTerminal.input.encoding=iso8859-1 -jar $EXAPLUS/exaplus.jar
Wenn ich EXAplus mit Hilfe von nohup starte, geht EXAplus in den [stopped] Modus. Wie kann ich EXAplus im Hintergrund starten?
Das Problem mit NOHUP ist bekannt und wird verursacht durch einen Konflikt zwischen dem Terminal und einem Java-Aufruf in EXAplus.
Alternativ können Sie EXAplus mit Hilfe von 'setsid' in einer eigenen Session starten oder mit Hilfe von 'screen' EXAplus im Hintergrund starten:
-
- > nohup setsid exaplus <params>
Bei großen Ergebnistabellen stürtz EXAplus ab
EXAplus ist ein Java-Programm und läuft in einer Virtuellen Maschine (VM). Beim Allozieren von großen Speichermengen wie beispielsweise beim Erzeugen einer großen Ergebnistabelle kann es unter Umständen zu Problemen kommen.
Die VM soll in solchen Fällen eine MemoryException werfen, damit Sie die Möglichkeit haben, EXAplus zu beenden. Passiert das nicht, handelt es sich höchstwahrscheinlich um einen Bug in der VM, für den schon mehere Fixes ausgeliefert insbesondere in den Sub-Releases 6u17 und 6u19.
Interne Ursache dieses Problems ist laut den Entwicklern der virtuellen Maschine, ein schlechte Wahl bei den Speicherhaltungsstrukturen für den HEAP und ein Teil anderer Algorithmen die unter anderem für den GC benutzt werden.
Sie können ein Update der VM auch selber durchführen. EXAplus verwendet die VM, die im Untervezeichnis JRE der EXAplus-Installation liegt. Wenn man
dieses Verzeichnis löscht, dann wird automatisch die neuste in Windows installierte VM genommen.
D.h., Sie können von www.java.com das neuste JRE (bzw. JDK von java.sun.com falls nötig) und das jre Verzeichnis im EXAplus-Installationspfad löschen. Der EXAplus Installationspfad hat in der der Regel folgenden Aufbau: C:\Programme\EXASOL\EXASolution-3.0\EXAplus.















