Khi tôi chạy đoạn mã sau, biến số engine
được đặt thành null
khi tôi đang sử dụng OpenJDK 7 (java-7-openjdk-i386
).Cố gắng sử dụng Rhino, getEngineByName ("JavaScript") trả về null trong OpenJDK 7
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;
public class TestRhino {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
ScriptEngineManager factory = new ScriptEngineManager();
ScriptEngine engine = factory.getEngineByName("JavaScript");
try {
System.out.println(engine.eval("1+1"));
} catch (ScriptException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Chạy tốt với java-6-openjdk
và Oracle jre1.7.0
. Bất kỳ ý tưởng tại sao?
Tôi đang sử dụng Ubuntu 11.10. Tất cả các JVM được cài đặt theo /usr/lib/jvm
.
Xem thêm [Javascript động cơ không thể tìm thấy] (http://stackoverflow.com/questions/6089773); Các nhà cung cấp JDK có thể chọn những công cụ kịch bản để đóng gói, nếu có. – McDowell
thú vị, jdk 7 có cùng một vấn đề đối với tôi trên debian. jrunsript của jdk6 chạy động cơ javascript và jdk 7 jrunsript in "động cơ cho js ngôn ngữ không thể tìm thấy". – josefx
Lưu ý: Bạn không thể chắc chắn rằng một công cụ tập lệnh cụ thể có sẵn. Nếu bạn _really_ cần nó, mang theo nó. –