2016-05-31 19 views
5

Tôi đang cố gắng sử dụng ScriptEngineManagerScriptEngine để thực thi một số mã JavaScript với Java. Tôi sử dụng Java 8 Tôi đang thực hiện mã này dưới Karaf OSGi.ScriptEngineManager và ScriptEngine không thể tải trong Karaf OSGi (Nashorn không tìm thấy)

Ví dụ tôi sử dụng công trình tốt trong một mẫu Java Class, nhưng đóng gói nó trong một bó mang lại cho tôi lỗi này ScriptEngineManager providers.next(): javax.script.ScriptEngineFactory: Provider jdk.nashorn.api.scripting.NashornScriptEngineFactory not found

Khi tôi nhìn vào tiêu đề của bó, tôi thấy rằng gói nhập khẩu javax.script, gói của các lớp được gọi nhưng có vẻ như (nashorn) nhà cung cấp không được tìm thấy.

Cảm ơn

Trả lời

6

Đến nộp etc/config.properties (nằm bên trong cài đặt Karaf), tìm tài sản org.osgi.framework.bootdelegation cấu hình và thêm jdk.nashorn. * Với nó. Cấu hình hoàn chỉnh sẽ như sau:

org.osgi.framework.bootdelegation=org.apache.karaf.jaas.boot,org.apache.karaf.jaas.boot.principal,sun.*,com.sun.*,javax.transaction,javax.transaction.*,javax.xml.crypto,javax.xml.crypto.*,org.apache.xerces.jaxp.datatype,org.apache.xerces.stax,org.apache.xerces.parsers,org.apache.xerces.jaxp,org.apache.xerces.jaxp.validation,org.apache.xerces.dom,sun.*,jdk.nashorn.* 

Bug được báo cáo cho cộng đồng Karaf.

Chỉnh sửa: Nếu bạn sử dụng Pax Exam Container 4.x cho Karaf trong thử nghiệm của bạn thì đừng quên thêm org.ops4j.pax.exam.CoreOptions.bootDelegationPackage("jdk.nashorn.*") vào cấu hình của vùng chứa thử nghiệm.

0

Bạn sẽ cần phải chắc chắn rằng bạn có một bó hoặc hệ thống để thực sự xuất những gói trong câu hỏi:

Vì vậy, hoặc cài đặt gói tương ứng, hoặc bạn cần phải tinh chỉnh trên xuất khẩu của gói hệ thống, trong trường hợp đó, hãy chỉnh sửa jre.properties và đảm bảo gói được đề cập được xuất từ ​​gói hệ thống.

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