当前位置: 首页 > 面试题库 >

带有长参数的java runtime.getRuntime.exec(cmd)

梁楷
2023-03-14
问题内容

我正在为命令行应用程序做前端。它很长。命令行与此类似:

public String liveShellCommand(){

  String cmd="command mode --parameter arg --parameter2 arg2 --parameter3 arg3";

  Runtime run = Runtime.getRuntime() ;
  Process pr ;
    try {
       log.progress("sending command: " +cmd);       
       pr = run.exec( cmd );
       pr.waitFor() ;

在我将“模式”开关添加到其中之前,一切似乎都可以正常工作。“模式”开关从命令行执行。我尝试了几种组合方法,将参数拆分为既不执行也不执行的数组。我认为这与“模式”不相关,因为它前面没有,也不能有。

我究竟做错了什么?

编辑:我忘了提到我所能看到的是:调试器停止在不可编译的源代码上。我正在使用netbeans,它似乎无法打印出堆栈跟踪。它在run.exec(cmd)上停止。java出问题了吗?

我能够使用ProcessBuilder来运行它,而不仅仅是失败…

它可以很好地解析“命令”,但是当我添加“命令模式”时

 java.io.IOException: Cannot run program "command mode": java.io.IOException: error=2, No such file or directory

所以我无法解析。


问题答案:

+1用于将参数作为数组发送。

通过字符串发送所有内容可能在某些系统上有效,但在其他系统上则失败。

Process start = Runtime.getRuntime().exec(new String[]
{ "java", "-version" });
BufferedReader r = new BufferedReader(
     new InputStreamReader(start.getErrorStream()));
String line = null;
while ((line = r.readLine()) != null)
{
    System.out.println(line);
}

我知道您已经说过,您尝试将参数作为字符串数组发送通过,但是没有成功,但是您是否收到了其他类型的错误?如果其他程序有日志,则可能要查看出了什么问题。您可以编写一个简单的脚本,输出用于调用的参数以测试实际通过的参数。



 类似资料:
  • 问题内容: 我正在阅读Wikipedia上的Singleton文章,并且遇到了以下示例: 虽然我真的很喜欢Singleton的行为方式,但是我看不到如何修改它以将参数合并到构造函数中。用Java进行此操作的首选方法是什么?我需要做这样的事情吗? 谢谢! 编辑:我想我对使用Singleton的渴望已经引发了一场争论的风暴。让我解释一下我的动机,并希望有人可以提出一个更好的主意。我正在使用网格计算框架

  • 问题内容: 在swift 3中建议使用带参数的GET的哪种方法? 范例: 提前致谢 ! 问题答案: 示例如何使用请求。

  • 问题内容: 我知道我不能在查询中使用(顺便说一句很可惜),我会收到以下错误: 但是我不能使用 那么,如何通过参数删除特定行? 问题答案: 房间的美在于,我们玩的是物体。根据要求,您可以使用kotlin: 对于Java: 它将删除存储在数据库中的具有相同值的确切对象。LanguageModel是我的模型类,它可以完美运行。

  • 问题内容: 是否有任何示例说明如何在Pandas中通过SQL查询传递参数? 特别是我正在使用SQLAlchemy引擎连接到PostgreSQL数据库。到目前为止,我发现以下工作原理: Pandas文档说,params也可以作为dict传递,但是例如,我似乎无法通过尝试使它起作用: 建议从熊猫运行这些类型的查询的方法是什么? 问题答案: 该文件说这个参数可以是一个列表,元组或字典(见文档)。 通过在

  • 目标是发送一个HTTP GET请求,其中包含表示枚举值的字符串列表问卷主题,然后使用这些参数选择正确主题的问题。我还添加了一个自定义转换器来将接收到的字符串转换为我的枚举。我的问题是当我在方法中调试时,“主题”总是为空。 这是我当前的RESTendpoint: 当我通过带有以下签名的方法传递单个主题时,我能够得到我的问题: 因此,将字符串转换为枚举似乎不是问题。 我尝试发送多个请求,但在endpo

  • 问题内容: 是否可以通过以参数作为参数的javascript函数? 例: 问题答案: 使用“关闭”: 这将创建一个匿名的临时函数包装器,该包装器知道该参数并将其传递给实际的回调实现。