jsr223

Status
Nicht offen für weitere Antworten.

nameac

Bekanntes Mitglied
abend,

Wenn ich über folgenden code versuche eine ein php File zu öffnen kommt immer eine java.lang.NullPointerException;
Code:
ScriptEngineManager m = new ScriptEngineManager(); 
ScriptEngine engine = m.getEngineByName("php");
engine.eval(new FileReader("file.php"));

oder kann man eine PHP Engine nur auf einem Tomcat Server ausfüren?
 
T

tuxedo

Gast
IN welcher der 3 Zeilen wir denn die Exception geworden? Stacktrace?

Gibts noch mehr Fehler außer die NPE?
 

Murray

Top Contributor
Ich tippe mal auf die letzte Zeile - ScriptEngineManager#getEngineByName liefrt dann null, wenn zum übergebenen Namen keine registrierte Engine-Factory gefunden wurde.

Mach mal
Code:
ScriptEngineManager m = new ScriptEngineManager(); 
List<ScriptEngineFactory> lst =  m.getEngineFactories();
for ( ScriptEngineFactory sef: lst) System.out.println( sef.getEngineName() + " (" + sef.getNames() + ")");
Damit solltest du sehen, welche Engines in deiner Umgebung verfügbar sind.
 

nameac

Bekanntes Mitglied
Ich habe gestern die groovy-engine.jar installiert, für php habe ich keine engine gefunden, jetzt sieht es wie folgt aus;

Code:
ScriptEngineManager manager = new ScriptEngineManager();
		//ScriptEngine engine = manager.getEngineByName("groovy");
		//System.out.println(engine.eval("(1..10).sum()"));
		List<ScriptEngineFactory> lst =  manager.getEngineFactories(); 
		for ( ScriptEngineFactory sef: lst) System.out.println( sef.getEngineName() + " (" + sef.getNames() + ")");

outout: Mozilla Rhino ([js, rhino, JavaScript, javascript, ECMAScript, ecmascript])
groovy ([groovy])

aber wenn ich versuche groovy zu laden:
Code:
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("groovy");
kommt folgender Stacktrace;

Exception in thread "main" java.lang.NoClassDefFoundError: org/codehaus/groovy/syntax/SyntaxException
at com.sun.script.groovy.GroovyScriptEngineFactory.getScriptEngine(GroovyScriptEngineFactory.java:90)
at javax.script.ScriptEngineManager.getEngineByName(Unknown Source)
at Main.main(Main.java:13)
 

Murray

Top Contributor
Sieht so aus, als würde die Groovy-Engine Groovy slebst nicht mitbringen - dann musst du wohl auch noch groovy.jar in den Classpath aufnehmen.
 

nameac

Bekanntes Mitglied
ich habe groovy-1.0.jar unter eclipse zum build path hinzu gefügt.jetzt kommt folgender fehler:
Code:
Exception in thread "main" java.lang.NoClassDefFoundError: org/objectweb/asm/Opcodes
	at java.lang.ClassLoader.defineClass1(Native Method)
	at java.lang.ClassLoader.defineClass(Unknown Source)
	at java.security.SecureClassLoader.defineClass(Unknown Source)
	at java.net.URLClassLoader.defineClass(Unknown Source)
	at java.net.URLClassLoader.access$000(Unknown Source)
	at java.net.URLClassLoader$1.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(Unknown Source)
	at java.lang.ClassLoader.loadClass(Unknown Source)
	at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
	at java.lang.ClassLoader.loadClass(Unknown Source)
	at java.lang.ClassLoader.loadClassInternal(Unknown Source)
	at groovy.lang.GroovyClassLoader.createCompilationUnit(GroovyClassLoader.java:421)
	at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:294)
	at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:275)
	at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:270)
	at com.sun.script.groovy.GroovyScriptEngine.getScriptClass(GroovyScriptEngine.java:259)
	at com.sun.script.groovy.GroovyScriptEngine.eval(GroovyScriptEngine.java:81)
	at javax.script.AbstractScriptEngine.eval(Unknown Source)
	at Main.main(Main.java:14)

eine umgebungsvariable zu grovvy ist auch vorhanden und die jars habe ich da auch eingetragen wobei ich nicht weiß ob das mit classpath gemeint war.
 

Murray

Top Contributor
nameac hat gesagt.:
eine umgebungsvariable zu grovvy ist auch vorhanden und die jars habe ich da auch eingetragen wobei ich nicht weiß ob das mit classpath gemeint war.
Nein, das war nicht gemeint. Wenn du aber in Eclipse arbeitest, dann ist das mit dem Build-Path schon in Ordnung; eclipse setzt den Classpath dann entsprechend. Jetzt fehlen dir offenbar aber noch andere Klassen.
 

nameac

Bekanntes Mitglied
Wie bekomme ich diese Klassen? ich habe mal im Groovy Verzeichnis gesucht da stehen genau die namen bloß mit .html aber .java Dateien kann ich nicht finden auch im Java Verzeichnis nicht.

aber wenn ich GroovyClassLoader l=new GroovyClassLoader(); schreibe schlägt er mir folgenden Import vor:

import groovy.lang.GroovyClassLoader;

so als wenn er die Klasse kennen würde. Wie bekommt man das denn zum laufen?
 

Murray

Top Contributor
Wenn du Groovy 1.0 installiert hast, müsste im Groovy-Verzeichnis ein Unterverzeichnis lib stehen. Darin befinden sich Jar-Files (also Archivdateien mit den übersetzten Klassen). Wenn du die in Eclipse zum Build-Path hinzufügst, "kennt" Eclipse die darin enthaltenen Klassen.
Wenn du die Groovy-Kassen als Soucen haben willst (braucht man normalerweise nicht), dann musst du sie dir zusätzlich bei codehaus.org herunterladen.
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben