JavaFX z Arią - powrót do strony głównej

Ewaluacja skryptu z pliku (JSR-223, Groovy Script)

Aby ewaluować skrypt używamy metody Object eval(Reader reader) klasy SriptEngine.
Nasz projekt wygląda tak:
Układ aplikacji

Skrypt skrypt1.groovy

Jest to ten sam skrypt, który wcześniej był umieszczony w stringu.

package scripts
println("Cześć! Jestem Groovy! Uczę się polskiego: ąćęłńóśźż")
Skrypt skrypt2.groovy

Jest to ten sam skrypt, który wcześniej był umieszczony w stringu.

package scripts
int power(int n) {
    2**n
}
a = 6
result = power(a)
println("power($a) = $result")
Klasa E03_EvalScriptFromFile1.java

Ewaluujemy skrypt skrypt1.groovy.

package jsr223groovy;

import java.io.IOException;
import java.io.Reader;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;

public class E03_EvalScriptFromFile1 {
	public static void main(String[] args) {

		String fileName = "src/scripts/skrypt1.groovy";
		Path path = Paths.get(fileName);
		if (! Files.exists(path) ) {
			System.out.println(path.toAbsolutePath() + " nie istnieje.");
			return;
		}
		ScriptEngineManager sem = new ScriptEngineManager();
		ScriptEngine se = sem.getEngineByName("Groovy");
		try {
			Reader reader = Files.newBufferedReader(path);
			se.eval(reader);
		}		
		catch (IOException | ScriptException e) {
			e.printStackTrace(); 
		}
	}
}

Po uruchomieniu klasy na konsoli zobaczymy:

Cześć! Jestem Groovy! Uczę się polskiego: ąćęłńóśźż
Klasa E03_EvalScriptFromFile2.java

Ewaluujemy skrypt skrypt2.groovy.

package jsr223groovy;

import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;
import java.io.IOException;
import java.io.Reader;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;

public class E03_EvalScriptFromFile2 {
	public static void main(String[] args) {

		String fileName = "src/scripts/skrypt2.groovy";
		Path path = Paths.get(fileName);
		if (! Files.exists(path) ) {
			System.out.println(path.toAbsolutePath() + " nie istnieje.");
			return;
		}
		ScriptEngineManager sem = new ScriptEngineManager();
		ScriptEngine se = sem.getEngineByName("Groovy");
		try {
			Reader reader = Files.newBufferedReader(path);
			se.eval(reader);
		}		
		catch (IOException | ScriptException e) {
			e.printStackTrace(); 
		}
	}
}

Po uruchomieniu klasy na konsoli zobaczymy:

power(6) = 64
Klasa module-info.java
module jsr223groovy {

    requires org.apache.groovy;

    requires java.scripting;
    requires java.sql;
}