2013-06-05 30 views
5

Tôi đang cố gắng để có được Nashorn của Oracle đang chạy dưới Java 7.Nashorn dưới Java 7

Tôi đã nhân bản repo và biên dịch nguồn. Tất cả tôi phải làm gì để có được nó để biên dịch là:

  • Thay đổi jdk.internal.org.objectweb.asm * để org.objectweb.asm *
  • Thay đổi một dòng mà có Long.hashCode (..) tĩnh.

Mọi thứ có vẻ vui vẻ và Java 7 xem Nashorn là công cụ tạo kịch bản; nhưng khi tôi cố gắng và có được một ví dụ:

NashornScriptEngineFactory factory = new NashornScriptEngineFactory(); 
ScriptEngine engine = factory.getScriptEngine(); 

tôi nhận được ngoại lệ:

java.lang.RuntimeException: java.lang.ClassNotFoundException: jdk.nashorn.internal.objects.Global tại jdk.nashorn.internal.runtime.Context.newGlobalTrusted (Context.java:831) tại jdk.nashorn.internal.runtime.Context.newGlobal (Context.java:636) tại jdk.nashorn.api.scripting. NashornScriptEngine $ 2.run (NashornScriptEngine.java:270) tại jdk.nashorn.api.scripting.NashornScriptEngine $ 2.run (NashornScriptEngine.java:266) tại java.security.AccessController.doPrivileged (Phương thức Gốc) tại jdk.nashorn.api.scripting.NashornScriptEngine.createNashornGlobal (NashornScriptEngine.java : 266) tại jdk.nashorn.api.scripting.NashornScriptEngine (NashornScriptEngine.java:104) tại jdk.nashorn.api.scripting.NashornScriptEngine (NashornScriptEngine.java:78) tại jdk.nashorn... api.scripting.NashornScriptEngineFactory.getScriptEngine (NashornScriptEngineFactory.java:139)

jdk.nashorn.internal.objects.Global là trong con đường của tôi. Nashorn có sử dụng trình nạp lớp khác không?

Trả lời

7

Tôi đã cố gắng làm cho nó hoạt động dưới 7 trước đó và gặp phải lỗi tương tự như bạn có. Tôi nghĩ rằng nó đã làm với thực tế là Nashorn sử dụng một số tính năng mới trong Java 8.

Có một số backport của Nashorn cho JDK 7 trên bitbucket; Tôi đã viết một bài đăng blog chi tiết cách sử dụng nó trên blog hoạt động của tôi here. Bạn cũng có thể xem this stack overflow question để biết thêm thông tin.

Dự án bitbucket đó đã không được cập nhật trong một thời gian, tôi khuyên bạn nên sử dụng bản xem trước của Java 8 nếu bạn muốn chơi với Nashorn.

+0

Cảm ơn. Có rất nhiều thay đổi đối với nguồn Nashorn giữa mã hiện có sẵn và backport bitbucket. Mã Nashorn đưa ra các lỗi ở trên thậm chí không có trong phiên bản bitbucket. – Kong

+0

Tôi đã ngừng sử dụng nó ngay khi bản xem trước Java 8 xuất hiện có chứa Nashorn trong đó. Nếu bạn sử dụng Nashorn thông qua API JSR223, mã của bạn sẽ làm việc với Rhino trong Java 7 nếu được viết chính xác, đó là cách tôi phát triển với cả hai tại thời điểm này. –

Các vấn đề liên quan