下午好
我正在寻找一种可靠的方法来确定客户端计算机上是否存在外部 jar,谁将使用我的 java 小程序。现在我正在做的是伪代码
try
{
controller.init()
}
catch Exception(Jar does not exist)
{
make pretty screen to tell users to download setup file
fire up browser with link to setup file
}
然而,向我抛出的异常是 UnsatisfiedLinkError ,我无法捕获它,因为它不是可恢复的。这基本上意味着我“离开”了一个浏览器窗口,其中包含指向安装文件的链接,但没有解释为什么它会出现。
当然,一个“简单”的修复方法就是在托管小程序的 html 页面中添加“如果 Java 崩溃,请下载建议的安装文件”,但是我更喜欢一个编程解决方案,而这正是你们参与的地方:)
提前感谢您的所有回答。
/杰布
最佳答案
您可以检查类路径中是否存在该 jar (System.getProperty("java.class.path")
)。
另一种方法是查看是否可以加载类文件资源。假设您要加载com.thirdparty.SomeClass
。然后,在调用 controller.init()
的任何类中,您都可以尝试
this.getClass().getCloassLoader.findResource("com.thirdparty.SomeClass.class")
this.getClass().getClassLoader().getResource("com.thirdparty.SomeClass.class")
如果返回值不为 null,则类加载应该会成功。
当然,jar 中的类本身可能依赖于其他类...您必须决定如何处理这种情况。
关于Java Applet - 如何确定客户端计算机上是否存在外部 jar 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7647605/