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

同时使用java.approved.dirs和java.library.path时发生冲突,java,worldwind,Java,Worldwind,我有一个利用CORBA的现有java应用程序。因此,它使用java.annowed.dirs命令行参数指向包含我们正在使用的CORBA库的目录。使用以下命令行,应用程序当前运行正常: java -splash:images/logo.png -Xms64m -Xmx1024m -Djava.endorsed.dirs=./lib -jar "myapp.jar" 现在,我需要将WorldWind支持添加到我的应用程序中。WorldWind jar文件调用本机库,似乎指示我使用java.libr

我有一个利用CORBA的现有java应用程序。因此,它使用java.annowed.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):

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

..Exception in thread "main" java.lang.UnsatisfiedLinkError: no gluegen-rt in java.library.path    
“gluegen rt”是WorldWind使用的库之一。上面的例外是,它很难找到WorldWind库

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

java -splash:images/logo.png -Xms64m -Xmx1024m -Djava.library.path="./lib" -jar "myapp.jar"
。。。然后我的应用程序运行良好(除了它现在使用默认的CORBA实现,而不是我们产品附带的实现)

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

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

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

export LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:./lib
注意:根据最终用户设置,不可能将CORBA文件放在标准jre/认可目录中


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

对于我的特殊情况,我有一个解决办法。两个命令行参数(java.approved.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"

我希望这能帮助其他人解决这个问题。尽管我仍然不确定为什么会出现“冲突”。

您能展示一下您的命令行吗?gluegen rt是否与此相关(corba/worldwind)或某个系统文件?这看起来像是linux或类似的。在执行应用程序之前,您是否尝试将“lib”添加到LD_LIBRARY_路径?可能不相关,但这可能是
LD_LIBRARY_路径=“${LD_LIBRARY_PATH}:./lib”
更新了我的问题,并回答了@jtahlborn问题
java -splash:images/logo.png -Xms64m -Xmx1024m -Djava.endorsed.dirs=./lib -Djava.library.path="./lib/worldwind" -jar "myapp.jar"