…und wieder Java8 mit Nashorn…

…das wieder Arbeit bereitet. Dieses Mal im Zusammenhang mit dem Kontoanlagenassisten. In diesem Fall ging es zuerst um die Art und Weise, wie ein Java-Array in Nashorn angelegt werden muss.

Unter Rhino geht es so:
var akt_infoArray = java.lang.reflect.Array.newInstance(java.lang.String, 1);

Unter Nashorn so:
var akt_infoArray = java.lang.reflect.Array.newInstance(java.lang.String.class, 1);

Man muss schon genau hinschauen, um den Unterschied zu sehen. was so ein kleines .class doch aus macht. Abe res kommt noch besser. Letztere Variante führt dann unter Java 7 aber zu einem Kompilierungsfehler. Und damit natürlich dazu, dass das Skript gar nicht mehr Läuft. Die Lösung ist dann folgendes für die Erstellung des Arrays falls man unter Java 8 ist:

var akt_infoArray = java.lang.reflect.Array.newInstance(java.lang.String["class"], 1);

Die komplette Lösung sieht dann so aus:
if (akt_jre_version8) {
var akt_infoArray = java.lang.reflect.Array.newInstance(java.lang.String["class"], 1);
} else {
var akt_infoArray = java.lang.reflect.Array.newInstance(java.lang.String, 1);
}

Weitere Tests haben dann noch einen weiteren schönen Unterschied der Beiden Skript-Engines hervorgebracht. Unter Rhino kann man mit [String].replace(Z1, Z2) alle vorkommen von Z1 im String mit Z2 ersetzten. Unter Nashorn wird nur das erste vorkommen ersetzt…

Lange Rede kurzes Statement, ab heute ist die Version 1.0.4 online mit der das Aktienskript nun sowohl unter Java 6/7, als auch unter Java 8 laufen sollte.

Nur noch eine kurze Anmerkung zum Santander Skript. Auch in diesem wird der Kontoanlageassistent verwendet und hat natürlich die selben Probleme unter Java 8. Wer also das aktuelle Skript (1.5.0) unter Java 8 installiert, wird einen Fehler bekommen. Als Work-Around kann, wie bisher auch, das Konto manuell angelegt werden. Die Kontoabfrage sollte dann eigentlich funktionieren.

 

Dieser Beitrag wurde unter Allgemein veröffentlicht. Setze ein Lesezeichen auf den Permalink.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert