Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从已签名的applet使用本地Jar_Java_Applet_Signed Applet - Fatal编程技术网

Java 从已签名的applet使用本地Jar

Java 从已签名的applet使用本地Jar,java,applet,signed-applet,Java,Applet,Signed Applet,可以让小程序使用本地jar吗 我的小程序应用程序需要有一些依赖项(66Mb的JAR)。用户可以在以前安装JAR,但如何从小程序中使用它们 我可以将它们保存到默认位置c:/myApp和/usr/local/myApp 我试着给它们加载: ClassLoader loader = URLClassLoader.newInstance( new URL[]{new URL("file://" + path + "/xuggle-xuggler-5.2.jar")

可以让小程序使用本地jar吗

我的小程序应用程序需要有一些依赖项(66Mb的JAR)。用户可以在以前安装JAR,但如何从小程序中使用它们

我可以将它们保存到默认位置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加载程序中吗


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

不,至少对于未签名的Applet来说,直接使用Applet是不可能的。 小程序类路径是相对于其代码库定义的,该代码库通常是小程序下载的位置

这里有一些可能的解决办法

  • 对于已签名的小程序,您可以使用从本地jar读取类的自定义类加载器(使用
    UrlClassLoader
  • 对于未签名的小程序,您可以将本地jar上载到服务器,然后从那里使用它。我认为这并没有那么糟糕:从用户的角度来看,他只是“帮助”应用程序找到定制jar所在的位置。真正发生的是jar被上传到服务器上,小程序从那里读取它。这种方法可以使用常规HTML表单实现,表单的输入标记类型为
    file
    。使用AJAX可以对用户隐藏很多细节
    +1了解一个有趣的问题,并提前提到您希望继续使用小程序。这个应用程序的特点是什么。这使得小程序非常适合?(看来你必须克服一些困难才能让它工作起来——参见AlexR的第1点。)你是否知道使用JAR部署的小程序可以延迟下载JAR(只有在需要时才下载)?这是一个非常严格的客户基础,而且,当需要使用时,每个人都应该准备好立即启动,因为它是一个实时应用程序。我知道(1),但用户在实际使用应用程序之前有时间(安装)。因此,使Applet如此适合的一点(我实际上开始使用JWS)是,应用程序有多个选项卡,每个选项卡都是某种上下文。让用户在web应用程序和本地应用程序之间切换,以便它能够选择他希望小程序在此时工作的上下文,这非常令人困惑。所以,UrlClassLoader是我想要的。谢谢。所以,事实证明UrlClassLoader并没有将类放入小程序的类装入器中。它在加载时没有给出错误,但在尝试使用它时给出了找不到的类。您的代码有问题。您必须使用自定义类加载器加载类。类似这样的内容:
    newurlclassloader(newurl[]{newurl(“file://c/custom.jar)装入类(“com.mycompany.MyClass”).newInstance()顺便说一句,我是否应该保留问题的答案并创建其他问题?如果是这样,我可以解决这个问题。无论如何,谢谢。问题是我试图满足一个java库,有很多类,我不能,至少不容易,知道所有需要单独加载的类。