gpt4 book ai didi

java - 同时使用 java.endorsed.dirs 和 java.library.path 时发生冲突

转载 作者:行者123 更新时间:2023-11-30 11:41:13 24 4
gpt4 key购买 nike

我有一个利用 CORBA 的现有 Java 应用程序。因此,它使用 java.endorsed.dirs 命令行参数指向包含我们正在使用的 CORBA 库的目录。该应用程序当前使用以下命令行运行良好:

java -splash:images/logo.png -Xms64m -Xmx1024m -Djava.endorsed.dirs=./lib -jar "myapp.jar"

现在,我需要将 WorldWind 支持添加到我的应用程序中。 WorldWind jar 文件调用 native 库,似乎指示我使用 java.library.path 命令行参数指向包含 native 库的目录。当我使用以下命令行时(添加 java.library.path):

java -splash:images/logo.png -Xms64m -Xmx1024m -Djava.endorsed.dirs=./lib -Djava.library.path="./lib" -jar "myapp.jar"

我在运行我的应用程序时收到以下错误:

..Exception in thread "main" java.lang.UnsatisfiedLinkError: no gluegen-rt in java.library.path    

“gluegen-rt”是 WorldWind 使用的库之一。上面的异常是说很难找到 WorldWind 库

如果我从命令行中删除 java.endorsed.dirs 目录

java -splash:images/logo.png -Xms64m -Xmx1024m -Djava.library.path="./lib" -jar "myapp.jar"

...然后我的应用程序运行良好(除了它现在使用默认的 CORBA 实现,而不是我们产品附带的实现)。

我能找到的关于这个主题的唯一链接是 here , 但这个问题似乎没有得到回答,所以我想我会在这里问。

这两个命令行参数可以共存吗?如果没有,是否有解决方法?

注意:我在 Red Hat Linux 上运行它。根据我收到的评论,我确实在运行我的应用程序之前尝试设置 LD_LIBRARY_PATH。那没有任何区别。

export LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:./lib

注意:根据最终用户设置,不可能将我们的 CORBA 文件放在标准的 jre/endorsed 目录中。

注意:我不认为这个问题是特定于 CORBA 或 WorldWind 的,但我想说明我使用上述两个命令行参数的原因。

最佳答案

我有一个针对我的特殊情况的解决方法。两个命令行参数(java.endorsed.dirs 和 java.library.path)都指向同一个目录。当我将它们更改为指向不同的目录时,事情开始起作用。我最终将 WorldWind 库移动到 lib/worldwind 以便我的命令行看起来像这样:

java -splash:images/logo.png -Xms64m -Xmx1024m -Djava.endorsed.dirs=./lib -Djava.library.path="./lib/worldwind" -jar "myapp.jar"

我希望这可以帮助其他人解决这个问题。虽然我仍然不确定为什么首先会出现“冲突”。

关于java - 同时使用 java.endorsed.dirs 和 java.library.path 时发生冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12357635/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com