这是我在尝试调用通过jarclassloader函数加载的applet中的函数时遇到的错误(第一行是由函数输出的,如在底部附近看到的那样)下面的代码)。
MyAppletLauncher:setdestination! Getting webcamclass ...
java.security.AccessControlException: access denied ("java.lang.RuntimePermission" "setContextClassLoader")
at java.security.AccessControlContext.checkPermission(Unknown Source)
小程序加载和运行正常。下面代码底部附近的例程setImageDestination()
就是它死亡的地方。我通过点击按钮(用于测试)从javascript调用函数setImageDestination()
。我以为我在下面的代码中误用了initApplet("webcam",this)
中的变量jcl:
import javax.swing.JApplet;
import java.lang.reflect.*;
public class MyAppletLauncher extends JApplet {
private JarClassLoader jcl;
@Override
public void init() {
jcl = new JarClassLoader();
try {
jcl.initApplet("webcam", this);
} catch (Throwable e) {
e.printStackTrace();
}
}
@Override
public void start() {
jcl.startApplet();
}
@Override
public void stop() {
jcl.stopApplet();
}
@Override
public void destroy() {
jcl.destroyApplet();
}
public void setImageDestination(String url, int type, int p1, int p2)
{
try {
System.out.println("MyAppletLauncher:setdestination! Getting webcamclass ...");
Class webcamclass=jcl.loadClass("webcam");
System.out.println(" Have webcamclass ... getting method ...");
Method m=webcamclass.getMethod("WebcamImageDestination",String[].class);
System.out.println(" Have method ... invoking ...");
m.invoke(jcl,url,type,p1,p2);
System.out.println(" Invoked.");
}
catch (Exception e) {
e.printStackTrace();
}
}
} // class MyAppletLauncher
答案 0 :(得分:0)
我需要在JAR中添加一个清单条目:
caller-allowable-codebase:*