使用签名applet中的本地Jar

时间:2012-03-20 15:35:16

标签: java applet signed-applet

是否可以让Applet使用本地jar?

我的Applet应用程序需要一些依赖项(价值66Mb的jar)。用户可以先安装jar,但是如何从applet中使用它们?

我可以将它们保存到默认位置c:/ myApp和/ usr / local / myApp

我尝试加载它们:

ClassLoader loader = URLClassLoader.newInstance(
                    new URL[]{new URL("file://" + path + "/xuggle-xuggler-5.2.jar")},
                    JNLP2Manager.getCurrentManager().getAppletClassLoader()
            );

            Thread.currentThread().setContextClassLoader(loader);

但jar不会自动添加到类路径中,我的意思是,我仍然需要单独加载每个类。

执行以下工作:

 Class cls = loader.loadClass("com.xuggle.xuggler.video.ConverterFactory");
            String testString = ConverterFactory.XUGGLER_ARGB_32;

但是我可以将所有类添加到applet加载器吗?

P.S。我知道我不应该使用Applet,但Applet仍然是最适合我的应用程序。

1 个答案:

答案 0 :(得分:2)

不,至少对于未签名的applet是不可能的。 applet类路径是相对于其代码库定义的,通常是从applet下载的代码库。

以下是可能的解决方法

  1. 对于签名的applet,您可以使用从本地jar读取类的自定义类加载器(使用UrlClassLoader)。
  2. 对于未签名的小程序,您可以本地jar上传到服务器,然后从那里使用它。我认为它并不是那么糟糕:从用户的角度来看,他只是“帮助”应用程序找到自定义jar的位置。真正发生的是jar被上传到服务器,applet从那里读取它。这种方式可以使用类型为file的输入标记的常规HTML表单来实现。使用AJAX可以隐藏用户的大量细节。