[Veraltet] Hibiscus-Scripting unter Mac OS mit/ab Java 7: Nutzungshinweise

Hier können pfiffige Benutzer Ihre geheimen Tricks und Erkenntnisse preis geben
Benutzeravatar
Hibiscus-Scripter
Administrator
Administrator
Beiträge: 2321
Registriert: Mi 30. Okt 2013, 17:14
Wohnort: Würzburg
Has thanked: 38 times
Been thanked: 29 times

[Veraltet] Hibiscus-Scripting unter Mac OS mit/ab Java 7: Nutzungshinweise

Beitrag von Hibiscus-Scripter » So 8. Dez 2013, 11:03

Liebe MacOSX- und Hibisc-Scripting-User,


Tipp:
Anwender welche Ihre Installation mit dem "Rundum-sorglos-Paket" installiert oder schon einmal damit ein Update oder Upgrade durchgeführt haben, unterliegen diesem Problem nicht und müssen daher diese Anleitung für Jameica/Hibiscus nicht durchführen.
Dennoch kann diese allgemein sehr informativ sein.

:!: ACHTUNG:
Aufgrund zukünftiger Pläne ist dieser Artikel obsulet und sollte nicht mehr angewendet werden. Ziel ist von meiner Seite der einheitliche Zeichensatz "UTF-8"!




--- VERALTET ---
leider ist aufgefallen dass bei einer manuellen Neuinstallation von Java 7 auf dem Mac (denn ab Mac 10.7.3 ist dies notwendig) es doch anzunehmen ist dass die Zeichenkodierung für die Java-Umgeben falsch ist.
Notwendig ist das neue Java 7 (also das Java welches direkt von Oracle kommt und nicht durch Apple über die Softwareaktualisierung vertrieben wird) eigentlich im Moment nur dann wenn man ein Comdirect-Konto über HBCI mit Hibiscus synchronisieren möchte. (denn mit Java 6 erhält man einen Crypter-Fehler)

Kann man überspringen wenn man will ;)
Hier mal Beispiele: (auch zu lesen unter dem MacUser-Forum als Problemthread)

Normalerweise sollte im LOG von Jamaika (zu finden unter Benutzername/Library/.jameica) am Anfang beim Start so etwas stehen:
(Jamaika und Hibiscus 2.x.x unter Mac OS X mit Java 6 von Apple vertrieben)
Es wird wie in diesem System typisch die Zeichencodierung (oder auch Charset oder FileEncoding) "MacRoman" verwendet

Code: Alles auswählen

[Thu Nov 28 19:07:59 CET 2013][INFO][de.willuhn.jameica.services.SysinfoService.init] Built-Date : 20121201
[Thu Nov 28 19:07:59 CET 2013][INFO][de.willuhn.jameica.services.SysinfoService.init]   Buildnumber: 437
[Thu Nov 28 19:07:59 CET 2013][INFO][de.willuhn.jameica.services.SysinfoService.init]   max. memory: 252mb
[Thu Nov 28 19:07:59 CET 2013][INFO][de.willuhn.jameica.services.SysinfoService.init]   sys charset: MacRoman
[Thu Nov 28 19:07:59 CET 2013][INFO][de.willuhn.jameica.services.SysinfoService.init] command line parameters
[Thu Nov 28 19:07:59 CET 2013][INFO][de.willuhn.jameica.services.SysinfoService.init]   [-o]
[Thu Nov 28 19:07:59 CET 2013][INFO][de.willuhn.jameica.services.SysinfoService.init]   [-psn_0_499834]
[Thu Nov 28 19:07:59 CET 2013][INFO][de.willuhn.jameica.services.SysinfoService.init] os.arch          : x86_64
[Thu Nov 28 19:07:59 CET 2013][INFO][de.willuhn.jameica.services.SysinfoService.init] os.name          : Mac OS X
[Thu Nov 28 19:07:59 CET 2013][INFO][de.willuhn.jameica.services.SysinfoService.init] os.version       : 10.7.5
[Thu Nov 28 19:07:59 CET 2013][INFO][de.willuhn.jameica.services.SysinfoService.init] java.version     : 1.6.0_65
[Thu Nov 28 19:07:59 CET 2013][INFO][de.willuhn.jameica.services.SysinfoService.init] java.vendor      : Apple Inc.
[Thu Nov 28 19:07:59 CET 2013][INFO][de.willuhn.jameica.services.SysinfoService.init] java.runtime.name: Java(TM) SE Runtime Environment
[Thu Nov 28 19:07:59 CET 2013][INFO][de.willuhn.jameica.services.SysinfoService.init] java.vm.name     : Java HotSpot(TM) 64-Bit Server VM
[Thu Nov 28 19:07:59 CET 2013][INFO][de.willuhn.jameica.services.SysinfoService.init] user.name        : derRichter
[Thu Nov 28 19:07:59 CET 2013][INFO][de.willuhn.jameica.services.SysinfoService.init] user.home        : /Users/derRichter
[Thu Nov 28 19:07:59 CET 2013][INFO][de.willuhn.jameica.services.SysinfoService.init] file.encoding    : MacRoman
Hier nun aber das selbe System mit dem Java JDK 7 bezogen von der Oracle-Homepage:
Leider sieht man hier nun dass eine Englische Zeichencodierung namens "US-ASCII" geladen wurde. Somit werden Umlaute im Scripting nicht mehr dargestellt und auch andere Zeichenketten werden anders interpretiert. Somit wird es unweigerlich zu unerwünschten Umsatzdopplern kommen …

Code: Alles auswählen

[Sat Dec 07 12:07:05 CET 2013][INFO][de.willuhn.jameica.services.SysinfoService.init]   Built-Date : 20121201
[Sat Dec 07 12:07:05 CET 2013][INFO][de.willuhn.jameica.services.SysinfoService.init]   Buildnumber: 437
[Sat Dec 07 12:07:05 CET 2013][INFO][de.willuhn.jameica.services.SysinfoService.init]   max. memory: 227mb
[Sat Dec 07 12:07:05 CET 2013][INFO][de.willuhn.jameica.services.SysinfoService.init]   sys charset: US-ASCII
[Sat Dec 07 12:07:05 CET 2013][INFO][de.willuhn.jameica.services.SysinfoService.init] command line parameters
[Sat Dec 07 12:07:05 CET 2013][INFO][de.willuhn.jameica.services.SysinfoService.init]   [-o]
[Sat Dec 07 12:07:05 CET 2013][INFO][de.willuhn.jameica.services.SysinfoService.init]   [-psn_0_2937549]
[Sat Dec 07 12:07:05 CET 2013][INFO][de.willuhn.jameica.services.SysinfoService.init] os.arch          : x86_64
[Sat Dec 07 12:07:05 CET 2013][INFO][de.willuhn.jameica.services.SysinfoService.init] os.name          : Mac OS X
[Sat Dec 07 12:07:05 CET 2013][INFO][de.willuhn.jameica.services.SysinfoService.init] os.version       : 10.7.5
[Sat Dec 07 12:07:05 CET 2013][INFO][de.willuhn.jameica.services.SysinfoService.init] java.version     : 1.7.0_45
[Sat Dec 07 12:07:05 CET 2013][INFO][de.willuhn.jameica.services.SysinfoService.init] java.vendor      : Oracle Corporation
[Sat Dec 07 12:07:05 CET 2013][INFO][de.willuhn.jameica.services.SysinfoService.init] java.runtime.name: Java(TM) SE Runtime Environment
[Sat Dec 07 12:07:05 CET 2013][INFO][de.willuhn.jameica.services.SysinfoService.init] java.vm.name     : Java HotSpot(TM) 64-Bit Server VM
[Sat Dec 07 12:07:05 CET 2013][INFO][de.willuhn.jameica.services.SysinfoService.init] user.name        : derRichter
[Sat Dec 07 12:07:05 CET 2013][INFO][de.willuhn.jameica.services.SysinfoService.init] user.home        : /Users/derRichter
[Sat Dec 07 12:07:05 CET 2013][INFO][de.willuhn.jameica.services.SysinfoService.init] file.encoding    : US-ASCII


Das Ziel ist nun also unter Mac OS X eine Javaumgebung mit Java 7 laufen zu haben um die Comdirect abrufen zu können, diese aber ordentlich mit Umlaut-Untersützung zum laufen zu bringen …

1.) Prüfen welche Java-Umgebung für das System und somit Jamaica/Hibiscus installiert und vor allem aktiv ist


Oben wurde ja schon beschrieben dass die verwendete Java-Umgebung in der jameica.log steht aber es geht natürlich auch einfacher.

Erstens, beim Start eines Scripts ab der Version 2.1.1 wird der verwendete Zeichensatz angezeigt

oder über die Konsole:
- Öffnen Sie über den Finder -> Programme -> Dienstprogramme das "Terminal"
- Tippen Sie dort nun "java -version"
- dort sieht man die für das System gültige Java-Umgebung und sollte für Java 7 also so aussehen:

Code: Alles auswählen

java version "1.7.0_45"
Java(TM) SE Runtime Environment (build 1.7.0_45-b18)
Java HotSpot(™) 64-Bit Server VM (build 24.45-b08, mixed mode)
sollte dort also 1.6.x_xx stehen dann ist für das System noch die Java-Version von Apple, vertrieben über die Softwareaktualisierung, installiert. Von daher machen wir mal bei Punkt 2 weiter …
Steht hier aber schon 1.7.x_xx dann kann direkt mit Punkt 3 weiter gemacht werden …



2.) Java 7 für das Mac OS X System installieren
(oder: ich hab doch Java 7 schon installiert wieso steht da immer noch 1.6.x_xx ???)


Hier kommen wir zu einem durchaus eigen artigem Problem das Oracle leider die Java-Laufzeitumgebung (JRE) als reines Browser-PlugIn installiert und für das System die Java-Entwicklungsumgebung (JDK) vorsieht. Diese werden getrennt installiert und auch gewartet.
Das ganze ist hier noch einmal genauer beschrieben: http://www.peter-grunwaldt.de/computer/ ... ml#javamac

Dies bedeutet kurz gesagt: Wenn man Java ganz normal über Google sucht oder eben über java.de bezogen und installiert hatte dann ist nur das Browser-PlugIn installiert worden (welches sich auch in die Systemeinstellungen setzt), nicht aber die Java-Umgebung für das System und eben normale Anwendungen selbst.

Hier ist es nun notwendig die sogenannte Java JDK von Oracle herunter zu laden: http://www.oracle.com/technetwork/java/ ... index.html
(vor der Installation könnte man wenn man möchte ganz sauber alles unter "Macintosh HD/System/Library/Java/JavaVirtualMachines"
und unter "Macintosh HD/Library/Java/JavaVirtualJavaVirtualMachines" löschen um die alte Java-Version zu entfernen. (sind diese Ordner leer und man startet ein Java-Programm wird einem automatisch angeboten die Java-Version 6 von Apple zu installieren, also keine Panik ;) )

so nun kann wieder mit einem "java -version" im Terminal getestet werden welche Java-Version denn aktiv ist.



3.) Prüfen der Zeichenkodierung und Möglichkeiten zum setzen der Zeichenkodierung

Hier ist es am besten man prüft mal wie oben schon beschrieben was nun in seinem eigenen jameica.log steht welche Zeichencodierung denn nun geladen wurde. Dort muss auf alle Fälle MacRoman auftauchen und auf keinen Fall US-ASCII.
(Dieses Problem sollte mit Java 7 Update 60 behoben sein, siehe: http://bugs.java.com/view_bug.do?bug_id=8011194 was aber so denke ich nicht stimmt da dann UTF-8 statt MacRoman eingestellt wird, also besser diese Anleitung dennoch durchführen)

Option a.) Empfohlen - Systemweite Einstellung für Java unter Mac OS X setzen

Hierfür brauchen Sie Administrator-Rechte
- Öffnen Sie über den Finder -> Programme -> Dienstprogramme das "Terminal"
- Tippen Sie

Code: Alles auswählen

sudo nano /etc/launchd.conf
ein und bestätigen das öffnen mit Ihrem Passwort
- Es öffnet sich ein Editor in dem Sie die Zeile

Code: Alles auswählen

setenv JAVA_TOOL_OPTIONS "-Dfile.encoding=MacRoman"
ein
- nun Speichen Sie diese Datei mit "ctrl + o" und bestätigen das Überschreiben mit "y" und der Enter-Taste
- und schließen dass ganze mit "ctrl + x" und tippen zweimal "exit"

Nach einem Neustart sollte dann beim Script ab der Version 2.1.1 oder in der Jameica.log beim Programmstart die gewählte Codepage angezeigt werden.


Option b.) Einzelne Anwendung mit richtigem Zeichensatz starten

Gehen Sie in den Finder unter Programme und klicken mit der rechten Maustaste auf Jameica.app und wählen "Paketinhalt anzeigen".
Es öffnet sich ein Finderfenster mit dem Inhalt bei dem eine Datei jameica-macos64.sh enthalten sein sollte.
Diese öffnen wir nun und fügen in der letzten Zeile dies ein: -Dfile.encoding=MacRoman
Das ganze kann dann so ausehen:

Code: Alles auswählen

exec ${JAVACMD} -Xdock:name="Jameica" -Xmx256m -XstartOnFirstThread -Dfile.encoding=MacRoman -jar "${BASEDIR}/jameica-macos64.jar" -o "$@"  >/dev/null
speichern … fertig …
Somit wird dieses Jameica immer mit der richtigen Zeichencodierung MacRoman geladen, auch wenn die Java-Umgebung unter einer anderen läuft.
(Beschrieben auch unter: http://mail-archives.apache.org/mod_mbo ... ail.com%3E)


Option c.) auch eine Methode aber immer manuell aber für Tests sehr gut

man öffnet wieder das Terminal und gibt da zuerst die Zeile ein

Code: Alles auswählen

export JAVA_TOOL_OPTIONS=-Dfile.encoding=MacRoman
nun kann man über dieses Terminal-Fenster (also in diesem Terminal-Fenster) automatisch Java-Programme mit der angegebenen Zeichencodierung starten

Code: Alles auswählen

/Applications/Jameica.app/jameica-macos64.sh
(Pfiffige User könnten sich diese Befehle jetzt natürlich in eine eigene jameica.sh schreiben und diese abspeichern und über diese immer Jameica starten oder sich den ersten Befehl auch in die bash.profile schreiben um diese Option auch bei einem neuen Terminal-Fester zu Verfügung zu haben)



Gruß

Zurück zu „Tipps und Tricks“