背景(可跳過):基本Groovy腳本引擎設置
我最近用Java寫了一個輕量級的服務器輪詢一個端口上的新連接,然後當客戶端連接它給了他們自己的線程,直至插槽關閉。現在,一旦客戶端連接,我需要做的是以特殊的方式準備XML文件請求;如果客戶端請求file1.xml,則服務器需要讀取file1.xml,將其解析爲JSON,然後將json對象發送給客戶端。
問題具體(現在開始閱讀): 我需要將XML文件解析爲Java中的JSON對象。我被推薦GROOVY來完成這項任務。在我的Mac和Ubuntu分區上安裝是一件輕而易舉的事情,但我無法使內聯groovy工作,原因很可能非常微不足道。這就是我現在的測試(在這一點上,我只是試圖讓嵌入式常規工作):
test.groovy
output = "Hello ${input}!"
test.java
import groovy.lang.Binding;
import groovy.util.GroovyScriptEngine;
String[] roots = new String[] { "/home/nick/Documents" };
GroovyScriptEngine gse = new GroovyScriptEngine(roots);
Binding binding = new Binding();
binding.setVariable("input", "world");
gse.run("test.groovy", binding);
System.out.println(binding.getVariable("output"));
這兩個文件都在我的/home/nick/Documents
文件夾中。當我嘗試編譯:
javac test.java
我得到的6個錯誤:
test.java:4: class, interface, or enum expected
String[] roots = new String[] { "/home/nick/Documents" };
^
test.java:5: class, interface, or enum expected
GroovyScriptEngine gse = new GroovyScriptEngine(roots);
^
test.java:6: class, interface, or enum expected
Binding binding = new Binding();
^
test.java:7: class, interface, or enum expected
binding.setVariable("input", "world");
^
test.java:8: class, interface, or enum expected
gse.run("test.groovy", binding);
^
test.java:9: class, interface, or enum expected
System.out.println(binding.getVariable("output"));
^
6 errors
我覺得我做錯了什麼在編譯階段。我怎樣才能得到這個編譯和運行?
幫助非常感謝
所以,該ScriptEngine是真的裝載所有的腳本依賴一個引擎爲一個項目? – djangofan