Mit Blick auf die Rhino to Nashorn migration guide sehe ich mehrere Möglichkeiten.
Wenn Sie nicht mit dem Rhino-Kompatibilitätsskript verwenden, dies würde es tun:
var usingNashorn = typeof importClass !== "function";
... seit importClass
für Rhino definiert ist, aber nicht für Nashorn (sofern Sie die Kompatibilitätsskript enthalten).
I denkenJava.type
ist Nashorn-spezifisch, so:
var usingNashorn = typeof Java !== "undefined" && Java && typeof Java.type === "function";
Sie für die Verpackung von Ausnahmen überprüfen könnten:
var usingNashorn;
try {
// Anything that will throw an NPE from the Java layer
java.lang.System.loadLibrary(null);
} catch (e) {
// false!
usingNashorn = e instanceof java.lang.NullPointerException;
}
... da die Migration Guide sagt, dass true
sein für Nashorn aber false
für Rhino. Es beinhaltet eine Ausnahme, die unglücklich ist.
Interessant. Warum brauchst du den Scheck? –
Wenn Sie nach Rhino vs Nashorn fragen, fragen Sie nicht nur über JDK SE 8 vs> 8? –
@JohnGreen: * "... über JDK SE 8 vs> 8?" * Nashorn wurde in JDK8 hinzugefügt (nicht> 8). Und es ist [immer noch möglich, Rhino in JDK8 auszuführen] (https://wiki.openjdk.java.net/display/Nashorn/Using+Rhino+JSR-223+engine+mit+JDK8) (aber Sie müssen ein Glas hinzufügen und mache es absichtlich). –