我正在尝试调用Applet1中的一个方法,这是我用来调用这个applet的JarClassLoader的主applet。还有一个AppletLauncher applet,我从那里启动Applet。我的代码是这样的。
public class AppletLauncher extends JApplet {
private JarClassLoader jcl;
public void init() {
System.setProperty("JarClassLoader.logger.level", "INFO");
System.setProperty("JarClassLoader.logger.area", "JAR,NATIVE,RESOURCE");
jcl = new JarClassLoader();
try {
jcl.initApplet("Applet1", this);
} catch (Throwable e) {
e.printStackTrace();
}
}
public String method3()
{
String a = jcl.method2();
return a;
}
}
我的JarClassLoader看起来像这样..
public class JarClassLoader extends ClassLoader {
public void initApplet(String sClass, final JApplet appletParent) throws Throwable {
Class<?> clazz = loadClass(sClass);
logInfo(LogArea.CONFIG, "initApplet() --> %s.init(); Loader: %s", sClass, clazz.getClassLoader());
applet = (JApplet)clazz.newInstance();
applet.setStub(new AppletStub() {
applet.init();
appletParent.setContentPane(applet.getContentPane());
......}
public String method2()
{
How to call method method1 in Applet1.as class is already loaded as show in above code.
}
我尝试过使用反射但没有工作......是不是我们可以用其他任何方式调用。 我已经从http://www.jdotsoft.com/JarClassLoader.php..For JarClassLoader引用了包装dll文件。
我的主Applet看起来像这样......
public class Applet1 extends JApplet
{
......
public String method1()
{
return abc;
}
}
请告诉我如何处理此问题...调用方法。最后我正在制作一个jar文件并将其包含在xhtml页面中并使用javascript调用它。
答案 0 :(得分:1)
您需要使用Class.forName
的三参数来指定您正在使用的类加载器。 (单参数形式使用直接调用类的类加载器,这有点顽皮。)
请注意,使用Java加载远程代码很难安全地进行。