我正在寻找java.library.path和类路径之间关系的简单解释。虽然我不是新手,但我从来没有弄过j.l.p.但我们遇到的问题是我参与的WebSphere MQ应用程序,我们希望将其跟踪转向。不幸的是,一旦我告诉IBM我们已经重新打包了MQ jar以便我们可以通过Maven进行部署,除非我们使用java.library.path加载WebSphere MQ jar,否则他们甚至不会和我讨论这个问题。
太棒了,让我们重做整个部署策略。我没关系咬那个子弹,但这是我的问题:
java.library.path和classpath之间有什么关系?在j.l.p上找到的类对编译器是否可见?你必须在编译器的命令行上指定j.l.p吗?你能在j.l.p和classpath上指定这些类吗?哪个优先。
请不要因为研究不充分而喋喋不休地说这个问题。我当然用谷歌搜索“java.library.path”。当然还有很多热门歌曲。我尝试进行高级谷歌搜索,将表达式限制在oracle.com网站上。还有很多点击率。我试过谷歌搜索这两个词。获得许多可疑质量的新手解释。我试过搜索java语言规范。没有命中。
我想要一个简洁而权威的解释。有人可以指点我吗?
更新 - IBM坚持认为他们的MQ跟踪工具将无法工作,除非我使用-Djava.library.path = {MQ jars的路径}加载我的应用程序,他们甚至不支持我尽管有服务合同,除非我这样做。然而,当然,我有代码引用这些类并且必须编译。这是这个问题的动机。
答案 0 :(得分:11)
java.library.path和classpath之间有什么关系?
没有,他们唯一的共同点就是它们都是路径。
在j.l.p上找到的类对编译器是否可见?
没有
你必须在编译器的命令行上指定j.l.p吗?
从不。您只需在运行时使用它。
你能在j.l.p和classpath上指定这些类吗?
只将类放在类路径上。
jlp等同于LD_LIBRARY_PATH,告诉OpenJDK / HotSpot JVM在哪里找到共享本机库,如.DLL
或.so
而不是JARS,而不是类。
http://examples.javacodegeeks.com/java-basics/java-library-path-what-is-it-and-how-to-use/