Java 从已签名的applet使用本地Jar
可以让小程序使用本地jar吗 我的小程序应用程序需要有一些依赖项(66Mb的JAR)。用户可以在以前安装JAR,但如何从小程序中使用它们 我可以将它们保存到默认位置c:/myApp和/usr/local/myApp 我试着给它们加载: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")
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是不可能的。 小程序类路径是相对于其代码库定义的,该代码库通常是小程序下载的位置 这里有一些可能的解决办法
UrlClassLoader
)李>
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库,有很多类,我不能,至少不容易,知道所有需要单独加载的类。