1

我在使用 ClassLoader 时遇到问题。我的代码片段:

[...]

Class<?> appletClass = classLoader.loadClass("path.to.Applet123");
Applet applet = (Applet) appletClass.newInstance();
applet.init();
applet.start();

[...]

而且 Applet123 类不是我的,所以我不能编辑它。但我知道,在 Applet123 类中是这样的:

public void init() {
    System.out.println(getParameter("myParameter"));
}

不幸的是它打印null

我有什么要添加到我的代码来加载带有myParameter包含字符串的参数的 Applet123.class,例如“Hello”?

感谢您的回复。

4

2 回答 2

1

如果您确实需要自己加载小程序,您还需要提供一个 AppletStub 实例,Applet 实例从中读取参数。Java 源代码显示了这一点:

public String getParameter(String name) {
    return stub.getParameter(name);
}

请注意,许多方法从存根实例获取数据,因此您可以执行以下操作并填补空白,或者(可能更好)使用@owlstead 提到的 JNLP!

AppletStub stub = new AppletStub() {
    // lots of code including defining the parameter 'myParameter'
};
Applet a = new Applet();
a.setStub(stub);
a.init();
// ...
于 2013-06-23T21:50:25.047 回答
0

看看Oracle的教程:

http://docs.oracle.com/javase/tutorial/deployment/applet/param.html

<?xml version="1.0" encoding="UTF-8"?>
<jnlp spec="1.0+" codebase="" href="">
    <!-- ... -->
    <applet-desc
         name="Applet Takes Params"
         main-class="AppletTakesParams"
         width="800"
         height="50">
             <param name="paramStr"
                 value="someString"/>
             <param name="paramInt" value="22"/>
     </applet-desc>
     <!-- ... -->
</jnlp>
于 2013-06-23T21:38:36.250 回答