用于在基于UNIX的系统中存储我的Java库和应用程序的常规位置

我通常将从Web上下载的Java应用程序和JAR文件存储在我的计算机(OS X机器)的〜/ Java文件夹中。 自从我是Windows用户以来,我一直在做这个。 不过,我认为在基于UNIX的系统中,用户本地应用程序通常存储在另一个目录中。 我感觉这个目录应该是/usr/local//usr/local/USERNAME/opt/local/opt/local/USERNAME但我不确定。 任何想法我可以用这个目录?

请注意,我正在讨论从Web下载的归档文件,在本地解压缩并使用,而不是具有安装脚本或MacPorts的程序等。

Solutions Collecting From Web of "用于在基于UNIX的系统中存储我的Java库和应用程序的常规位置"

没有任何祝福的方式来做到这一点。 然而,你可能会碰到有多个版本的jar,然后从那里下山。

我通常会下载我需要的jar作为发行版,并将其解压缩到自己的文件夹,然后将jar添加到我需要的项目中。 对于图书馆来说,一个常见的方法是使用Maven及其依赖关系处理。

所以,我的建议是保持目前的做法,如果你喜欢,但是每个项目都在自己的文件夹中,比如

 ~/Java/jakarta-commons-net-1.1.8/commons-net.jar 

答案是,你不应该手工下载罐子,你应该使用Gradle , Ivy , Maven或类似的东西来管理你的罐子。 这些工具将您的依赖关系作为输入的简单说明,并去查找,下载,存储和提供所有必需的jar文件。 这需要一点点习惯,但是一旦你处于摇摆状态,它们会相当美妙。

直接的答案是,在正统的unix上,这些文件属于/usr/local/shareusr因为它们是只读数据,不是基本操作系统的一部分, 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,并将其转换为用户管理的文件系统空间。

苹果有一个笔记给/图书馆/ Java /扩展作为共享瓶子和〜/图书馆/ Java /扩展JAR的目录只为你自己。 这些路径在类路径上。

只要该目录在您的课程路径中,罐子就可以在任何地方。 (我使用ThorbjørnRavn Andersen的风格,我使用〜/ Library / Jar / jakarta-commons-net-1.1.8 / commons-net.jar)

请参阅汤姆·安德森(Tom Anderson)的答案,以更好的方式使用常春藤等

您可能希望阅读文件系统层次结构标准 / opt或/ usr / local可能是合适的,但您应该先阅读FHS定义。

在FreeBSD系统上,位置是${LOCALBASE}/share/java及其子目录。 并不是所有的软件端口都尊重它,但它们应该。

LOCALBASE通常是/usr/local – 除非被系统管理员覆盖。