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

时间:2012-09-10 18:44:26

标签: java worldwind

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

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

现在,我需要为我的应用程序添加WorldWind支持。 WorldWind jar文件调用本机库,似乎指示我使用 java.library.path 命令行参数指向包含本机库的目录。当我使用以下命令行(添加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的,但我想说明我使用上述两个命令行参数的原因。

1 个答案:

答案 0 :(得分:1)

我有一个解决我的特殊情况的工作。两个命令行参数(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"

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