当前位置: 首页 > 知识库问答 >
问题:

在systemd中执行jar文件时强制工作目录

堵乐
2023-03-14

我试图在linux中从systemd服务启动一个jar。我正在执行的jar假设在当前目录中有一个xml文件。我正在传递该文件的名称,并带有-config参数。我创建的示例服务如下:

<代码>[单元]描述=我的服务后=网络。目标

[服务]Type=simple-Environment=“xml\u file\u name=sample.xml”ExecStart=/usr/bin/java-jar/path/to/jar/myapp。jar-config${xml\u file\u name}

上面的服务文件位于/usr/lib/systemd/system目录中,称为myservice。服务我正在执行以下命令来启动它:

systemctl守护程序重新加载systemctl stop myservice。服务系统CTL启动myservice。服务系统CTL状态myservice。服务

系统CTL状态myservice。service命令显示jar文件已经运行,但我的应用程序说它找不到${xml\u file\u name}。

此外,我的jar声明它是从/目录执行的。我相信这是问题的一部分,因为${xml_file_name}只适用于 /path/to/jar/目录。

尝试的内容:

>

将/路径/更改为/jar/以确保其已启用所有可能的权限

我尝试在我的systemd服务的[Service]部分下添加User=root,但没有更改。无论哪种方式,机器上只有root用户,并且权限似乎都已签出。

更奇怪的是,如果我将cd刻录到/,然后手动执行:

/usr/bin/java-jar /path/to/jar/myapp.jar-configsample.xml

一切都很好。

有什么明显的东西我在这里遗漏了吗?是否可以告诉systemd服务,执行这个java jar,但要确保工作路径是相对于代码而不是路径到jar?

共有2个答案

伊光赫
2023-03-14

尝试以下操作:

 cd /path/to/jar && /usr/bin/java -jar /path/to/jar/myapp.jar -config sample.xml

如果您使用

曾承弼
2023-03-14

为了解决这个问题,我最终在[Service]部分下使用了以下属性:

<代码>[服务]。。。WorkingDirectory=/path/to/jar ExecStart=/usr/bin/java-jar my。jar-配置示例。xml

解决了问题!

 类似资料:
  • 当我尝试执行时,执行这一行 我从我的Lib文件夹中得到一个错误,说其中一个罐子不能正常工作。 我不知道jar文件是否有问题,因为它在Windows中运行良好,但在linux中不起作用。 这是我的. sh文件: 我刚把我在网上找到的东西抄了下来,因为我有一个朋友。bat文件从我使用Windows开始,从Windows到linux的传输是否要求我对jar文件做些什么?

  • Android Studio是完美的工作,但当我执行jar文件 但jar文件在这种情况下无法执行,这是出了什么问题。有什么建议吗

  • 问题内容: 一直在玩cython。通常使用Python进行编程,但前世曾使用C。我不知道如何制作一个独立的可执行文件。 我已经下载了cython,并可以创建一个.pyx文件(这是一个带有.pyx扩展名的普通Python文件),可以使用以下命令在Python Shell中执行:import pyximport; pyximport.install() 我可以使用以下命令在命令行中生成.c文件:cyt

  • 问题内容: 我有一个包含两个简单的Java swing文件的程序。 如何为程序制作可执行的jar文件? 问题答案: jar文件只是包含Java文件集合的文件。为了使jar文件可执行,你需要指定 Class在jar文件中的位置。示例代码如下。 编译你的类。要制作一个jar,你还需要创建一个清单文件()。例如, 将编译后的输出类文件(JarExample.class,JarExample $ 1.cl

  • 是否有可能为Spring Boot可执行JAR设置工作目录? 这没有帮助。

  • null 这里出了什么问题。