我应该将外部 Java 库放在程序的目录结构中的什么位置?
我是 Java 新手,正在尝试弄清楚如何构建我的程序文件。
我下载了一个库(jnotify),其中包含一个 jar
和Java 源代码的 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
我像这样导入 jnotify:
# myprogram/program.java
import net.contentobjects.jnotify.*;
... code body here ...
并通过显式设置 java.library.path 来运行它:
$ java -Djava.library.path=. myprogram/Program
这感觉不对,但我不知道 Java 组织源文件和库的方式是什么。
如何整理我的程序结构,以便 jnotify
存在于 lib/jnotify
之类的东西中,但可以合理地导入、编译和运行?
I'm new to Java, and trying to figure out how to structure my program's files.
I've downloaded a library (jnotify), which contains both a jar
and also zip of the Java source code.
So far, I've only got my program working by extracting jnotify's source to the top level directory of the program. So jnotify's source files are all over the place, and my program's code is in a subdirectory.
$ ls /path/to/project
CHANGELOG
inotify-syscalls.h
jnotify_64bit.dll
jnotify.dll
libnotify.so
my-projects-actual-files/
net/
README
... etc
I'm importing jnotify like so:
# myprogram/program.java
import net.contentobjects.jnotify.*;
... code body here ...
And running it by explicitly setting java.library.path
:
$ java -Djava.library.path=. myprogram/Program
This feels wrong but I have no idea what the Java way of organising source files and libraries is.
How can I neaten my program's structure so that jnotify
lives in something like lib/jnotify
but can be imported, compiled and run sensibly?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
jar 应该位于类路径上,库路径指定 dll 所在的位置。
java -classpath lib/jnotify.jar;。 -Djava.library.path=lib/ myprogram/Program
您不应该解压缩源代码,除非您需要调试 jnotify 代码。
The jar should just be on the class path, the library path specifies where the dll lives.
java -classpath lib/jnotify.jar;. -Djava.library.path=lib/ myprogram/Program
You shouldn't unzip the source code, unless you need to debug the jnotify code.