我在哪里将外部Java库放在程序的目录结构中?

nfm*_*nfm 2 java directory-structure libraries

我是Java的新手,并试图弄清楚如何构建程序的文件.

我已经下载了一个库(jnotify),它包含jarJava源代码的a 和zip.

到目前为止,我只是通过将jnotify的源提取到程序的顶级目录来完成我的程序.所以jnotify的源文件到处都是,我的程序代码在子目录中.

$ ls /path/to/project
CHANGELOG
inotify-syscalls.h
jnotify_64bit.dll
jnotify.dll
libnotify.so
my-projects-actual-files/
net/
README
... etc
Run Code Online (Sandbox Code Playgroud)

我像这样导入jnotify:

# myprogram/program.java
import net.contentobjects.jnotify.*;
... code body here ...
Run Code Online (Sandbox Code Playgroud)

并通过明确设置运行它java.library.path:

$ java -Djava.library.path=. myprogram/Program
Run Code Online (Sandbox Code Playgroud)

这感觉不对,但我不知道Java组织源文件和库的方式是什么.

我怎样才能结束我的程序结构,以便jnotify生活在类似lib/jnotify但可以导入,编译和合理运行的东西中?

MeB*_*Guy 5

jar应该只在类路径上,库路径指定dll所在的位置.

java -classpath lib/jnotify.jar;.-Djava.library.path = lib/myprogram/Program

除非需要调试jnotify代码,否则不应解压缩源代码.