11

我正在寻找 java.library.path 和类路径之间关系的简单解释。虽然我几乎不是新手,但我从来不用弄乱 jlp 但是我们在使用我参与的 WebSphere MQ 应用程序时遇到了问题,我们想打开他们的跟踪。不幸的是,一旦我告诉 IBM 我们已经重新打包了 MQ jar 以便我们可以通过 Maven 进行部署,他们甚至不会跟我谈论这个问题,除非我们使用 java.library.path 加载 WebSphere MQ jar。

太好了,让我们重做整个部署策略。我可以咬紧牙关,但这是我的问题:

java.library.path 和 classpath 之间有什么关系?在 jlp 上找到的类对编译器可见吗?你必须在编译器的命令行上指定jlp吗?你能在 jlp 和类路径上都指定这些类吗?哪个优先。

并且请不要因为研究不足而对这个问题嗤之以鼻。我当然搜索过“java.library.path”。当然是数以万计的点击量。我尝试进行高级谷歌搜索,将表达式限制为 oracle.com 站点。仍然有数以万计的点击量。我试着用谷歌搜索这两个术语。得到很多质量可疑的新手解释。我试过搜索java语言规范。没有命中。

我想要一个简洁而权威的解释。有人可以指点我吗?

更新- IBM 坚持认为,除非我使用 -Djava.library.path={path to MQ jars} 加载我的应用程序,否则他们的 MQ 跟踪工具将无法工作,尽管有服务合同,除非我这样做,他们甚至不会支持我这边走。然而,当然,我有引用这些类并且必须编译的代码。这就是这个问题背后的动机。

4

1 回答 1

15

java.library.path 和 classpath 之间有什么关系?

没有,它们唯一的共同点是它们都是路径。

在 jlp 上找到的类对编译器可见吗?

不。

你必须在编译器的命令行上指定jlp吗?

绝不。您只需要在运行时使用它。

你能在 jlp 和类路径上都指定这些类吗?

只将类放在类路径上。

jlp 等效于 LD_LIBRARY_PATH 并告诉 OpenJDK/HotSpot JVM 在哪里可以找到共享的本地库,例如JARS,.DLL.so不是类。

http://examples.javacodegeeks.com/java-basics/java-library-path-what-is-it-and-how-to-use/

于 2014-07-25T20:37:35.340 回答