繁体   English   中英

如何在Applet中加载外部jar文件?

[英]How do I load an external jar file in a Applet?

所以我正在用C#开发一个项目,但是为了使我前进,我需要运行我的jar文件。 这是jar文件

jar文件是一个名为Runescape的游戏,如果我双击该jar文件,它不会做很多事情,所以我在看这个示例

Applet applet = (Applet)classLoader.loadClass("client").newInstance();
applet.setStub(stub);
applet.setSize(new Dimension(763, 504));
applet.init();
applet.start();
i.add(applet);
i.pack();
i.setDefaultCloseOperation(3);
label.setVisible(false);

从外观上看,它使用jar文件并在Applet中运行该文件,从而为用户提供游戏的直观表示。 并认为这可能会有所帮助。

现在,由于我是一名具有Java方面的Java经验的C#开发人员,所以我很难知道从哪里开始,我已经安装了IntelliJ并准备创建一个项目,但是要使该jar文件在Applet中运行,我需要做什么?这样我以后就可以编译该项目并将它用作游戏的“客户端”?

从应用程序运行applet实际上并不是那么容易(并且不建议这样做)。 我为您的jar文件编写了一个小测试,遇到一个问题,我认为我缺少正确的AppletStub

import javax.swing.*;
import java.applet.Applet;
import java.awt.*;
import java.io.File;
import java.net.URL;
import java.net.URLClassLoader;

class appletrunner
{
    public static void main(String[] args) throws Exception //This is not proper Exception handling!
    {
        JFrame frame = new JFrame("test");
        File jar = new File("gamepack_8614663.jar");
        URLClassLoader classLoader = new URLClassLoader(new URL[] {jar.toURI().toURL()}, appletrunner.class.getClassLoader());
        Class<?> client = classLoader.loadClass("client");
        Applet applet = (Applet)client.newInstance();
        Runtime.getRuntime().addShutdownHook(new Thread() {
            public void run() {
                applet.stop();
                applet.destroy();
            }
        });
        frame.getContentPane().add(applet);
        frame.pack();
        frame.setVisible(true);
        applet.init(); // Exception here
        applet.start();
    }
}

这在applet.init()上失败, applet.init()带有一个神秘的异常(由runescape jar使用的混淆器引起)。 但是我认为使用适当的AppletStub本身需要一个AppletContext才能起作用。

您可以尝试为这些接口实现一个类,然后使用addStub()将它们添加到applet中。 希望这会有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM