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

使用java Runtime()或Process Builder执行或运行应用程序

长孙诚
2023-03-14

我正在尝试从javaservlet执行应用程序。当我在集成了eclipse的tomcat上运行它时,它工作得很好。当我试图在集成了操作系统的tomcat服务器上通过将.war文件部署到webapps中来做同样的事情时,它不起作用。它也没有遇到任何错误。即使我检查了日志,也没有任何错误,只有常见的tomcat访问日志。是否有其他方法可以执行firefox、chrome、gedit等应用程序。

注意:ls、chmod、mkdir等基本bash命令正在工作。但是在调用gedit、Firefox等应用程序时,它不起作用。

使用的语句:*Runtime.getRuntime(). exec(命令)甚至Firefox也使用/bin/bash-c调用。没有结果。*ProcessBuilder

有其他选择吗??

共有1个答案

葛磊
2023-03-14

ProcessBuilder接受多个参数,您应该拆分命令参数。例如,如果您正在执行<code>ls-sl</code>,则必须调用

 new ProcessBuilder("ls", "-sl");

另一个例子:

 new ProcessBuilder("pg_dump", "database", '-u', 'username', '--clean');

否则,ProcessBuilder 可能无法识别该命令。也不要忘记使用

processBuilder.redirectErrorStream(true);   // equivalent of 2>&1

这将重定向stderr到stdout。

 类似资料:
  • 问题内容: 我创建了一个类,该类使用ProcessBuilder创建流程,然后启动流程 现在,当我在linux机器上运行该类时,它运行良好,但是在Windows上却给了我错误,指出未找到“ mvn”之类的东西,我需要更改为 但是,如果我在命令提示符“ mvn exec:java -Dexec.mainClass = FunnyClass”上运行命令,它将运行正常。那么,为什么我需要在process

  • 我正在尝试不带参数地运行“/home/simulations/scripts/getdsuip . sh”命令。 当我在机器上手动运行这个命令时,效果很好!所以这个文件肯定在那里,肯定是可以运行的(755),并且在同一个用户(root)下。我只在一台机器上看到这个问题,它在其他地方也能工作,但我想弄清楚为什么它会失败。 这会导致以下错误: 我还尝试了其他方法来运行它,结果也是同样的错误: 这是我尝

  • 我已经使用向导生成了一个带有导航抽屉的应用程序。 当我选择“运行”“应用”或“调试”“应用”时,我会得到以下错误: 生成签名APK...选项工作,它创建的签名应用程序,可以安装在电话和工作。也可以使或重建项目在调试或发布中工作,没有错误。 null

  • I使用Processbuilder如下所示: 在方法中,我设置要执行的linux命令,如下所示: 我可以从终端执行相同的命令。

  • 我试图使用Java的类来执行包含管道的命令。例如: 然而,我得到了一个错误: 然后: 尽管该命令在命令行中运行得很好,但我无法让执行将其输出重定向到另一个的命令。 有没有办法做到这一点?

  • 对于一个小的新项目,我决定尝试一下JDBI(通常我使用hibernate/jpa)。 我喜欢使用@SqlUpdate/@Sql Query创建轻量级、基于注释的dao。 但是:在某些情况下,我无法确定是要创建实体还是更新现有实体。我会放置一个“选择”语句,并根据其返回值使用插入或更新语句。 问题:jdbi中的“仅接口”道是否以某种方式支持这一点?还是我必须自己编写一个“createOrUpdate