LINUX.ORG.RU

Java: В апплет встроить JS движек.


0

0

Собстно движек встроен, но не работает:

SEVERE: 
java.security.AccessControlException: access denied (java.lang.RuntimePermission createClassLoader)
	at java.security.AccessControlContext.checkPermission(AccessControlContext.java:323)
	at java.security.AccessController.checkPermission(AccessController.java:546)
	at java.lang.SecurityManager.checkPermission(SecurityManager.java:532)
	at java.lang.SecurityManager.checkCreateClassLoader(SecurityManager.java:594)
	at java.lang.ClassLoader.<init>(ClassLoader.java:226)
	at org.mozilla.javascript.DefiningClassLoader.<init>(DefiningClassLoader.java:54)
	at org.mozilla.javascript.ContextFactory.createClassLoader(ContextFactory.java:347)
	at org.mozilla.javascript.Context.createClassLoader(Context.java:2217)
	at org.mozilla.javascript.SecurityController.createLoader(SecurityController.java:143)
	at org.mozilla.javascript.optimizer.Codegen.defineClass(Codegen.java:122)
	at org.mozilla.javascript.optimizer.Codegen.createScriptObject(Codegen.java:81)
	at org.mozilla.javascript.Context.compileImpl(Context.java:2361)
	at org.mozilla.javascript.Context.compileString(Context.java:1348)
	at org.mozilla.javascript.Context.compileString(Context.java:1337)
	at org.mozilla.javascript.Context.evaluateString(Context.java:1193)
	at ru.test.js.ScriptEngine.eval(ScriptEngine.java:63)
	at ru.test.clnt.TestApplet.exec(TestApplet.java:103)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at sun.plugin.javascript.JSInvoke.invoke(JSInvoke.java:20)
	at sun.reflect.GeneratedMethodAccessor16.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at sun.plugin.javascript.JSClassLoader.invoke(JSClassLoader.java:72)
	at sun.plugin.liveconnect.PrivilegedCallMethodAction.run(SecureInvocation.java:566)
	at java.security.AccessController.doPrivileged(Native Method)
	at sun.plugin.liveconnect.SecureInvocation$2.run(SecureInvocation.java:140)
	at java.security.AccessController.doPrivileged(Native Method)
	at sun.plugin.liveconnect.SecureInvocation.CallMethod(SecureInvocation.java:121)
	at sun.plugin.navig.motif.AThread.handleRequest(Native Method)
	at sun.plugin.navig.motif.AThread.JNIHandleLoop(AThread.java:40)
	at sun.plugin.navig.motif.AThread.run(AThread.java:32)
При всем при этом апплет (и библиотеки кторые апплет юзает) подписан, и тягает методы требущие привелегий, но стоит из браузера вы звать метод апплета ru.test.clnt.TestApplet.exec который получает строку на выполнение и вылетает вышеприведенное исключение. Собстно как разрешить ему создать этот ClassLoader?

★★☆

боюсь, что рино компилит твой яваскриптный код в байткод и динаически его вызывает, а это супернесекурно для аплета. поэтому подебугь код рино у org.mozilla.javascript.DefiningClassLoader и уточни, можно ли такое делать в апплете бай дизайн.

Pi ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.