javax.script.ScriptException bei der ScriptEngine

pkm

Bekanntes Mitglied
Ich wollte die einfache Auswertung von JavaScript-Funktionen mit der ScriptEngine üben; dies wollte ich erreichen, indem ich eine .js-Datei auslesen wollte. Dabei habe ich mich an der Dokumentation orientiert:

https://docs.oracle.com/javase/7/docs/technotes/guides/scripting/programmer_guide/

..in welcher es heißt:

Evaluating a Script File
In this example, we call the eval method that accepts java.io.Reader for the input source. The script read by the given reader is executed. This way it is possible to execute scripts from files, URLs and resources by wrapping the relevant input stream objects as readers.

Code:
import javax.script.*;
public class EvalFile {
   public static void main(String[] args) throws Exception {
       // create a script engine manager
       ScriptEngineManager factory = new ScriptEngineManager();
       // create JavaScript engine
       ScriptEngine engine = factory.getEngineByName("JavaScript");
       // evaluate JavaScript code from given file - specified by first argument
       engine.eval(new java.io.FileReader(args[0]));
   }
}


Let us assume that we have the file named "test.js" with the following text:

println("This is hello from test.js");


We can run the above Java as

java EvalFile test.js

Ich habe also ein einfaches Programm in eclipse geschrieben, welches eine JS-Datei auslesen soll. Das Programm sieht wie folgt aus:

Code:
import java.io.FileNotFoundException;

import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;

public class MainMethod {

   public static void main(String[] args) {
        // create a script engine manager
        ScriptEngineManager factory = new ScriptEngineManager();
        // create JavaScript engine
        ScriptEngine engine = factory.getEngineByName("JavaScript");
        // evaluate JavaScript code from given file - specified by first argument
        try {
           System.out.println(engine.eval(new java.io.FileReader("/home/user/workspace/Test/src/faculty.js")));
       } catch (FileNotFoundException e) {
           // TODO Auto-generated catch block
           e.printStackTrace();
       } catch (ScriptException e) {
           // TODO Auto-generated catch block
           e.printStackTrace();
       }
   }

}

Meine JS-Datei kann er auch finden, diese enthält nur eine Zeile Code:

Code:
println("This is hello from test.js");

Wenn ich das Programm ausführe, bekomme ich dennoch eine Exception, und ich habe keine Ahnung, woher diese rührt:

javax.script.ScriptException: ReferenceError: "println" is not defined in <eval> at line number 1
at jdk.nashorn.api.scripting.NashornScriptEngine.throwAsScriptException(NashornScriptEngine.java:470)
at jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngine.java:454)
at jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngine.java:406)
at jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngine.java:402)
at jdk.nashorn.api.scripting.NashornScriptEngine.eval(NashornScriptEngine.java:150)
at javax.script.AbstractScriptEngine.eval(AbstractScriptEngine.java:249)

Wieso ist println denn nicht definiert?
 

mrBrown

Super-Moderator
Mitarbeiter
Nein, steht er nicht.


Meine JS-Datei kann er auch finden, diese enthält nur eine Zeile Code:

Code:
println("This is hello from test.js");

Wenn ich das Programm ausführe, bekomme ich dennoch eine Exception, und ich habe keine Ahnung, woher diese rührt:
[...]
Wieso ist println denn nicht definiert?
println gibt es in Javascript so nicht, wenn du System.out.println dafür nutzen willst, solltest du es auch so hinschreiben ( oder die Variante aus dem Beispiel nutzen)
 

krgewb

Top Contributor
Ich habe es nun getestet. Ohne ln funktioniert es.

Java-Code:
Java:
import java.io.FileNotFoundException;

import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;

public class MainMethod {

   public static void main(String[] args) {
        // create a script engine manager
        ScriptEngineManager factory = new ScriptEngineManager();
        // create JavaScript engine
        ScriptEngine engine = factory.getEngineByName("JavaScript");
        // evaluate JavaScript code from given file - specified by first argument
        try {
           System.out.println(engine.eval(new java.io.FileReader("test.js")));
       } catch (FileNotFoundException e) {
           // TODO Auto-generated catch block
           e.printStackTrace();
       } catch (ScriptException e) {
           // TODO Auto-generated catch block
           e.printStackTrace();
       }
   }

}
Inhalt von C:\Users\Erich\Desktop\Schule\eclipse_java_mars\workspace\Test_121_Programm_fuer_pkm\test.js:
Code:
print("This is hello from test.js");

Es wird ausgegeben:
Code:
This is hello from test.js
null
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
HolyFUT Javax Websocket API implementieren Java Basics - Anfänger-Themen 14
nbergmann Wo ist javax.swing.JOptionPane gespeichert? Java Basics - Anfänger-Themen 4
O Problem mit SOAP / javax.xml importieren Java Basics - Anfänger-Themen 7
J javax.servlet.ServletException: Name is null Java Basics - Anfänger-Themen 7
N javax swing JOptionPane Hilfe Java Basics - Anfänger-Themen 3
P JDK installieren javac behauptet Javax.swing existiert nicht Java Basics - Anfänger-Themen 8
B javax.ejb.Timer wieder starten? Java Basics - Anfänger-Themen 0
R Klassen Javax.vecmath.* Java Basics - Anfänger-Themen 5
S timer funktion mit javax panel Java Basics - Anfänger-Themen 3
M Javax.swing - Timer(2 Button) Java Basics - Anfänger-Themen 17
T eclipse findet javax nicht Java Basics - Anfänger-Themen 4
N Erste Schritte import javax.media.3d....; //Fehlermeldung: cannot be resolved Java Basics - Anfänger-Themen 10
timbeau Javax.Mail: Check this out Java Basics - Anfänger-Themen 10
c_sidi90 javax.exe beenden nach Programmende Java Basics - Anfänger-Themen 10
L javax.xml.transform.Source Java Basics - Anfänger-Themen 6
StrikeTom Javax.mail frage(zu code) Java Basics - Anfänger-Themen 17
N javax.swing.JOptionPane einbauen? Java Basics - Anfänger-Themen 9
D package javax.comm does not exist Java Basics - Anfänger-Themen 5
kulturfenster Problem mit javax.swing.Timer Java Basics - Anfänger-Themen 2
C javax.print.DocPrintJob Java Basics - Anfänger-Themen 17
G Fehler beim builden javax...... Java Basics - Anfänger-Themen 4
J Servlet Interface javax.servlet.Servlet Java Basics - Anfänger-Themen 2
? Konsolenprogramm hat Problem mit java.awt oder javax.swing Java Basics - Anfänger-Themen 7
G NoClassDefFoundError: javax/xml/stream/XMLStreamException Java Basics - Anfänger-Themen 23
A Finde javax.servlet.* nicht Java Basics - Anfänger-Themen 6
M Fehler: package javax.portlet does not exist Java Basics - Anfänger-Themen 2
V Serialisieren einer ShortMessage (javax.sound.midi) Java Basics - Anfänger-Themen 5
alexpetri javax.xml.stream.* nicht gefunden Java Basics - Anfänger-Themen 3
A java.awt und javax.swing verschwunden Java Basics - Anfänger-Themen 2
S import javax.image.io.*; funktioniert nicht Java Basics - Anfänger-Themen 28
L getDuration() von einem javax.media.player objekt problem. Java Basics - Anfänger-Themen 3
K Problem mit javax/servlet/http/HttpServletRequest.java Java Basics - Anfänger-Themen 2
E Wo bekomme ich das javax.swing.* package her? Java Basics - Anfänger-Themen 3
G import javax.servlet cannot be resolved Java Basics - Anfänger-Themen 1
N Probleme mit import von javax.servlet.* Java Basics - Anfänger-Themen 3
B Wo finde ich die Klasse javax.sound.sampled.AudioSystem Java Basics - Anfänger-Themen 7
R Javax.mail wird nicht gefunden Java Basics - Anfänger-Themen 2
G wie bekomme ich das javax.jws.* package in den JBuilder ? Java Basics - Anfänger-Themen 7
J javax.comm-API kompilieren Java Basics - Anfänger-Themen 12
C wo ist mein javax.mail? Java Basics - Anfänger-Themen 2
L JavaMail: javax.mail wird nicht gefunden Java Basics - Anfänger-Themen 2
F javax.imageio.ImageIO write methode Java Basics - Anfänger-Themen 11
B javax entpacken - aber wohin? Java Basics - Anfänger-Themen 2
V Bild per Java Script austauschen Java Basics - Anfänger-Themen 7
L Bubblesort in Batch Script Java Basics - Anfänger-Themen 15
F Shell Script ausführen Java Basics - Anfänger-Themen 5
L Shell Script ausführen in Java Java Basics - Anfänger-Themen 4
J script: jar Datei starten auf Mac Os Java Basics - Anfänger-Themen 2
E Compiler-Fehler Javac Windows vs Ubuntu /Script vs Konsole Java Basics - Anfänger-Themen 4
H Kaseya2 Script Packs Java Basics - Anfänger-Themen 0
H Script ausführen wenn Browser Notification eingetroffen ist? Java Basics - Anfänger-Themen 3
R Daten via Post an php Script senden Java Basics - Anfänger-Themen 1
B Java Script Zufallshintergrund Java Basics - Anfänger-Themen 2
M Script für Externes Programm Java Basics - Anfänger-Themen 6
T Änderung an Script Java Basics - Anfänger-Themen 6
D Compiler-Fehler ANT-Script geht nicht Java Basics - Anfänger-Themen 6
P ein Java Script mit Shell/Bash launchen? Ubuntu Java Basics - Anfänger-Themen 3
S Lightbox Script vs. Taco HTML Script Java Basics - Anfänger-Themen 4
M JUNIT tests mit ant script ausführen Java Basics - Anfänger-Themen 4
3 Erste Schritte benötige hilfe bei diesem Script Java Basics - Anfänger-Themen 2
D script.aculo.us requires the Prototype JavaScript framework >= 1.6.0.2 Java Basics - Anfänger-Themen 2
T Shell Script Aufruf mit Java Java Basics - Anfänger-Themen 7
H sprung zu einem anderen punkt im script Java Basics - Anfänger-Themen 11
M Script Verbessern Java Basics - Anfänger-Themen 8
B Script Text Zeichen Suche funktioniert nicht Java Basics - Anfänger-Themen 7
B Wo ist der Fehler in meinem Script Java Basics - Anfänger-Themen 4
L vb-Script in Java ausführen Java Basics - Anfänger-Themen 3
G java shell script starten und befehl übergeben Java Basics - Anfänger-Themen 3
G Datei an PHP Script senden und speichern Java Basics - Anfänger-Themen 2
S Shell Script ausführen unter Java Java Basics - Anfänger-Themen 5
V suche nach nsis script für java applikation Java Basics - Anfänger-Themen 2
G Java-Klasse aus Java-Script aufrufen Java Basics - Anfänger-Themen 3
D kleines script abhaengig von Ordner Bilder kopieren Java Basics - Anfänger-Themen 11
G nach action Script aufrufen Java Basics - Anfänger-Themen 3
zilti PHP-Script aufrufen und Rückgabe lesen Java Basics - Anfänger-Themen 2
L Java Applet/Script wird nicht angezeigt. Java Basics - Anfänger-Themen 3
M ANT-Script - Fehlermeldung wegbekommen Java Basics - Anfänger-Themen 6
J java script mit java parsen Java Basics - Anfänger-Themen 6
J Script funktioniert nicht. Java Basics - Anfänger-Themen 4
S einfaches script mit Eingabeaufforderung starten (javac) Java Basics - Anfänger-Themen 8
O Post senden an php script. Java Basics - Anfänger-Themen 20
K VB-Script ausführen Java Basics - Anfänger-Themen 6
Turkey@mp3 Brauche nen Titelauswahl/wunsch script Java Basics - Anfänger-Themen 3
C kleines Java script mit Frage Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben