我通常将从Web下载的Java应用程序和JAR文件存储在我的计算机(OS X机器)上的〜/ Java文件夹中。自从我成为Windows用户以来,我一直在这样做。但是我认为在基于UNIX的系统中,用户本地应用程序通常存储在另一个目录中。我觉得这个目录应该是/usr/local/
,/usr/local/USERNAME
,/opt/local
或/opt/local/USERNAME
,但我不确定。我可以将任何目录用于此目的吗?
请注意,我说的是我从网上下载的存档文件,在本地解压缩和使用,而不是安装脚本或MacPorts的程序等。
答案 0 :(得分:14)
副回答是你根本不应该手工下载罐子,你应该使用Gradle,Ivy,Maven或类似的东西来管理你的罐子为了你。这些工具将依赖项的简单规范作为输入,然后查找,下载,存储并提供所有必需的jar文件。这需要一点点习惯,但一旦你摆脱它就相当精彩。
直接的答案是,在正统的unix上,这些文件属于/usr/local/share
。 usr
因为它们是不是基本操作系统local
的一部分的只读数据,因为它们不是由操作系统提供的(它拥有/usr
的其余部分)和share
因为jar文件与架构无关。
请注意,在FreeBSD上,'ports'包管理系统将文件放在/usr/local
中,但我相信它与本地管理员共享。没有其他位置纯粹的本地文件。
如果系统具有包管理的罐子所在的约定,则将其复制到/usr/local
下。例如,在Ubuntu上,有/usr/share/java
,因此您应该使用/usr/local/share/java
。
此外,如果系统具有处理版本的约定,请复制该版本。同样,在Ubuntu上,jar都存储在一个目录中,名称中包含版本号,但是无版本符号链接指向默认/最新版本。所以,我有/usr/share/java/xstream-1.3.1.jar
的文件,/usr/share/java/xstream.jar
指向它的符号链接。我在/usr/local/share/java
中使用了相同的方法。
现在,这是正统的unix。你在OS X上,这不是正统的unix。这些原则仍然适用:查找系统如何存储它提供的jar,并将其转换为用户管理的文件系统空间。
答案 1 :(得分:3)
Apple有一个note赠送/ Library / Java / Extensions作为共享jar的目录和〜/ Library / Java / Extensions for jars只为你自己。这些路径位于类路径上。
只要该目录位于类路径上,jar就可以在任何地方。 (我使用的版本 ThorbjørnRavnAndersen的风格我用〜/ Library / Jar / jakarta-commons-net-1.1.8 / commons-net.jar)
请参阅Tom Anderson的回答,了解如何使用常春藤等更好的方法
答案 2 :(得分:2)
您可能希望阅读Filesystem Hierarchy Standard / opt或/ usr / local可能是合适的,但您应首先阅读FHS定义。
答案 3 :(得分:2)
没有任何有福的方法可以做到这一点。但是,你可能会遇到一个罐子的多个版本,然后它就会从那里走下坡路。
我经常将我需要的jar作为发行版下载,并将其解压缩到自己的文件夹中,然后将jar添加到我需要的项目中。对于库,常见的方法是使用Maven及其依赖性处理。
所以,我的建议是保持你目前的做法,如果你喜欢,但让每个项目都在自己的文件夹中,比如
~/Java/jakarta-commons-net-1.1.8/commons-net.jar
答案 4 :(得分:1)
在FreeBSD系统上,位置为${LOCALBASE}/share/java
- 及其子目录。并非所有软件端口都尊重它,但它们应该。
LOCALBASE
通常为/usr/local
- 除非系统管理员覆盖。