Java:如何干净利落地处理没有外部库的情况?

标签 java external

我正在使用我没有分发许可的商业 API 库。

我的应用程序的最终用户必须安装该库并将其放在类路径中,这样我的应用程序才能运行。除了 jar 之外,它们还必须在 LD_LIBRARY_PATH 中有一些其他文件。

我更愿意在启动时运行测试,确保先决条件已安装并且我正在使用的对象正常工作。如果不是,请返回一条用户友好的消息,其中包含说明或执行某种更正。 (比如询问用户库的安装位置并将一些变量写入启动脚本)。

我找到了 ClassLoader.loadClass我认为我应该使用它,但我还没有找到一个示例来说明我的用例,我不确定是否可以直接使用它。

我相信如果 loadClass 成功,我需要实例化一个类对象并尝试使用它来确定 LD_LIBRARY_PATH 是否设置正确。

如果有任何帮助,我将不胜感激。

最佳答案

您需要一个抛出异常的方法,在该方法中您可以捕获 ClassNotFoundExceptionNoClassDefFoundError

        public void testCatchException() {
            try {
                checkClassesExisting();
            } catch (ClassNotFoundException ex) {
                // TODO handle exception
            } catch (NoClassDefFoundError ex) {
                // TODO handle exception
            } catch (Exception ex) {
                // other error
            }
        }


        public void checkClassesExisting() throws Exception {
            // instantiate here the class in doubt
            Dummy = new Dummy("xx");
        }

附加信息在 NoClassDefFoundError

关于Java:如何干净利落地处理没有外部库的情况?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14655425/

相关文章:

java - Java中的继承(设计模式)

C++ 外部对象放置

c - 在全局范围内混合使用 extern、static 和无存储说明符的声明

java - 通用子类型和通配符在 Collections.copy 中如何工作?

c# - 使用与主程序存储在不同文件夹中的引用库 (dll)?

android - SD卡删除通知,它是如何完成的?广播还是服务?

php - 使用在本地 nginx 服务器上运行的 codeigniter 连接到外部 mysql 数据库

java - SpringBoot 可能存在重定向过滤问题

java - 如何检查一个数字是否包含某个数字?

java - 线程中出现异常 "main"java.awt.AWTError : Assistive Technology not found: com. sun.java.accessibility.AccessBridge 错误