如何从JarClassLoader和返回字符串数据的applet Launcher调用小程序中的方法

How to call method in applet from JarClassLoader and Applet Launcher which returns string data

本文关键字:Launcher applet 调用 程序 方法 数据 JarClassLoader 字符串 返回      更新时间:2023-09-26

我正在尝试调用Applet1中的一个方法,它是我从JarClassLoader中调用这个小程序的主要小程序。还有一个AppletLauncher小程序,我从那里启动小程序。我的代码是这样的。

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用于打包dll文件的JarClassLoader。

我的主Applet看起来像这样。。。

public class Applet1 extends JApplet 
{ 
 ......
public String method1()
{
    return abc;
} 
}

请告诉我该怎么办。。调用该方法。最后,我制作了一个jar文件,并将其包含在xhtml页面中,然后使用javascript调用它。

您需要使用Class.forName的三个参数来指定您正在使用的类加载器。(单参数形式使用立即调用类的类加载器,这有点顽皮。)

注意,用Java加载远程代码很难安全地完成。