【问题标题】:Unable to start Activemq using Java无法使用 Java 启动 Activemq
【发布时间】:2025-12-02 20:15:02
【问题描述】:

我正在尝试在我的 Ubuntu 机器上启动 activemq。我正在尝试使用 Java 启动服务。以下是我的代码:

Runtime rt=  Runtime.getRuntime();
rt.exec(new String[]{"/bin/sh", "-c", "cd /home/varkala/Srinivas /Prime360/softwares/apache-activemq-5.5.1/bin;./activemq start"});

我也尝试运行 bin 文件夹中的 run.jar。但它没有工作

rt.exec(new String[]{"/bin/sh", "-c", "cd /home/varkala/Srinivas /Prime360/softwares/apache-activemq-5.5.1/bin;java -jar run.jar start"});

这些是错误日志:

  /bin/sh: 1: cd: can't cd to /home/varkala/Srinivas
    Can't open startup.sh

但是当我手动打开终端并执行命令时,activemq 会启动。我的代码有问题吗?

更新:奇怪的是,我尝试使用另一个目录执行 cd 命令:/home/Varkala/Desktop .. 该命令工作正常。但是对于上述目录,我收到错误

【问题讨论】:

  • 恐怕“它不起作用”不足以让我们尝试确定原因。您可以分享任何错误或日志输出吗?
  • @ThisIsNoZaku 提供了错误日志
  • 尝试启动脚本而不是直接运行jar activemq.apache.org/unix-shell-script
  • 等等,主目录是 /home/Varkala 还是 /home/varkala/Srinivas(2 级深)?
  • 您能否详细说明您为什么使用Java 程序调用shell 脚本来启动Java 程序?为什么不简单地运行嵌入 Java 程序的代理?

标签: java activemq ubuntu-16.04


【解决方案1】:

这在技术上可能不是正确的答案。每当我尝试复制完整路径时,我注意到路径的两个文件夹之间有一个 空格 SrinivasPrime360 。您可以在我的问题的第一行代码中观察它。对于 Desktop 等其他位置的文件,我没有看到在我的程序中复制和粘贴完整路径时的那个空间。我所做的只是,我将我的文件夹从 Srinivas 重命名为 srinivas,令人惊讶的是,它起作用了。我正在使用 Ubuntu 16.04 LTS

【讨论】: