2014-04-21 39 views
0

我用java犀牛LIB爲腳本引擎在我的應用程序, 使用戶可以編寫自己的腳本來控制應用程序做了一些工作,如何在java rhino lib腳本中不導入系統庫類?

,但我不希望他們使用Java系統的lib在腳本中的類,例如:「java.lang.Sytem.exit()」,

沒有人知道該怎麼辦?謝謝

回答

1

在您的上下文中調用Context.setClassShutter(ClassShutter),並使用適當的ClassShutter實現方法實現方法visibleToScripts(String fullClassName),無論您希望如何過濾(或插入)您想從腳本中使用的任何類。

+0

由代碼如下: 上下文cx = Context.enter(); \t \t cx.setClassShutter(新ClassShutter(){ \t \t \t @覆蓋 \t \t \t公共布爾visibleToScripts(字符串CLS){ \t \t \t \t返回FALSE; \t \t \t} \t \t \t \t \t }); 我可以刪除所有默認的java系統包,我也可以通過這種方式添加其他主機對象,所以它的工作原理! – Porcelain

+2

順便說一下,版本1.7.6後,這裏來了一個新的方法「initSafeStandardObjects」,它啓動一個新的作用域對象,沒有任何默認的系統包。 參考:https://github.com/mozilla/rhino/pull/171#event-282458660 – Porcelain