我该如何告诉Java在哪里可以找到本地库?

问题描述:

我想弄清楚我的Java是否行为不端。我该如何告诉Java在哪里可以找到本地库?

我已经清理,并内置在NetBeans我的Java项目,然后试着用下面的命令在命令行中运行该程序:

java -jar ProjectName.jar 

我收到以下错误:

The library x.dll could not be loaded by Windows. Make sure that the library is in your Path environment variable. Exception in thread "main" java.lang.ExceptionInInitializerError.

这是否意味着对于dist文件夹中的库文件的每个项目,我需要将它包含在路径环境变量中?这听起来非常麻烦,我会认为Java会足够聪明,可以查看这些库文件的lib文件夹。或者我需要在IDE中配置其他的东西来做到这一点?

+0

*“我原以为java会足够聪明的去查看这些库文件的lib文件夹。”*什么是'lib'文件夹?我认为你会发现lib目录是你的IDE的工件和它安排事物的方式。 –

+0

啊,你说得对。我正在使用NetBeans。让我重新编辑/编辑我的问题。 –

java -Djava.library.path=<path where dll located> -jar ProjectName.jar 

当您启动应用程序/ Java时,您需要将dll或jar包含在类路径中。

http://download.oracle.com/javase/7/docs/technotes/tools/windows/java.html

+0

糟糕。抱歉。 DLL或罐子。 –

+0

最好提供一个链接到最新的JavaDocs。我会在一会儿编辑你的答案,以包括这一点。顺便说一句 - 低调选民会分享他们的推理吗? IMWTK。 –

+0

我相信反对意见是因为回答罐子不是dll。采取的点。 –

无论是共享库必须在你的PATH指定的目录,或者你可以把它放在同一个目录中正在执行的jar文件,并确保它是当前目录(组如果使用快捷方式,或者如果使用脚本,在运行程序之前cd到该目录,则“启动”。

我还没有在Netbeans中试过这个。 Eclipse似乎没有办法指向共享库位置。

+0

删除,因为答案没有解决netbeans –

+0

得到一个标志:“我认为这个答案应该重新打开.OP提到无法让它在netbeans **或命令行**工作,后者是他们真的需要了解才能做出成功的部署,后者在这个答案中得到解决。“你可以重新评估吗?谢谢。 – Will