java - 在 Linux 上哪里可以放置 .jar 文件?

标签 java linux

我有一个自定义构建的库,用于运行 systemd 的 Python 服务(所有用户都可以使用,并在启动时启动)。此服务使用我自定义构建的 .jar 文件。

我应该在哪里复制这个库?

我认为 /usr/share/java/ 是正确的文件夹。这是正确的吗?

最佳答案

如果您尝试遵循良好的做法并且此 jar 文件未随您的应用程序一起提供,那么根据文件系统层次结构标准,您是正确的。 不过还有一些次要问题。

1) 您的服务是通过标准打包系统安装的吗?

2) 这个 jar 文件是你服务的一个组件吗,是否只为你的服务服务?

这将引导您说出类似这样的话:它是共享的,所以它应该放在这里。 如果您的服务未使用标准打包系统,通常的做法是使用/opt 目录的子树,包括/opt/your_app/lib,但这仅在您的应用程序也遵循该结构时才有用,否则只是污染。

如果您正在使用打包系统,那么/usr/share/java/或/usr/lib 确实是一个不错的选择(如果您的应用程序是从/usr/bin 或/usr/sbin 调用的)。另一个不错的选择是在/usr/local 中,前提是您的这个应用程序是特定于主机的。

为简单起见,如果您手动安装您的应用程序,而不是使用 .deb 之类的东西,请在/opt 中使用您的应用程序结构,否则您将需要评估此库的特征、共享与否,具体到您的主办与否。

/usr/share/java/是 java 应用程序的常见选择位置,但有时会被误用。

无论如何,不​​应该有使用/opt 或/usr 之外的子树的参数

综上所述,我几乎可以肯定,你正在寻找/opt/your_app/lib,猜测你正在打包你的应用程序并自己安装它,也猜测这个 jar 只对你的应用程序有用。

关于java - 在 Linux 上哪里可以放置 .jar 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54634877/

相关文章:

linux - Bash - 逐行打印句子

java - 你能在 Android Studio 的 SQLite 中创建你自己的 Enum 类型吗?

java - 完成另一个类(class)的 Activity

java - 使用 Junit 的 GWT 类的单元测试代码

linux - 如何用 git 组织单树?

c++ - typeinfo pragma 可见性错误

java - 创建多对一(n :1)/one-to-one (1:1) relationship with JDBI 3

java - 为什么即使没有插入新行,executeUpdate 也会返回 1?

ruby-on-rails - 生产中的 Rails 5 控制台不从环境中读取数据库密码

linux - 在 ThinkPad w550s Ubuntu 系统(Quadro K620M)上运行 CUDA