标签: processbuilder

从另一个java进程在Windows控制台中运行java进程

我试图从我的Java进程启动另一个Java进程.问题是我希望Windows控制台出现,而AnotherApp要写入该控制台.

此Java代码段确实启动了一个新进程,但未显示控制台.

ProcessBuilder pb = new ProcessBuilder("cmd", "/k", "java", "-jar", "AnotherApp.jar");
pb.start();
Run Code Online (Sandbox Code Playgroud)

如果我从Start - Run运行

cmd /k java -jar AnotherApp.jar
Run Code Online (Sandbox Code Playgroud)

然后创建一个新的控制台并启动java进程.

java windows console jar processbuilder

1
推荐指数
1
解决办法
1419
查看次数

ProcessBuilder 无法运行带参数的 python 脚本

好的,我有一个通过 ProcessBuilder 运行的 python 脚本。一切正常。我遇到的问题是每当我将参数传递到 python 脚本中时,python 脚本都会以unrecognized argumets. 但如果我采取确切的命令并将其复制并粘贴到命令提示符中,它就会运行得很好。有什么帮助吗?这是我现在的总体想法:

ProcessBuilder builder = new ProcessBuilder("C:\Python33\" + "python.exe","-u", "C:\...\script.py", "--arg1 " + "argumentValue");
p = builder.start();
Run Code Online (Sandbox Code Playgroud)

java processbuilder

1
推荐指数
1
解决办法
4753
查看次数

java.io.IOException: 无法运行程序“”: CreateProcess error=2,系统找不到指定的文件

我只是想测试运行 Eclipse 项目目录中的 shell 脚本。

new ProcessBuilder("scripts/test.sh").start();
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

出现此错误:

java.io.IOException:无法运行程序“scripts/test.sh”:CreateProcess error=2,系统找不到指定的文件

java sh processbuilder

1
推荐指数
1
解决办法
3万
查看次数

ProcessBuilder 不输出任何内容

我使用 Process Builder 运行 shell 命令:

try {
    ProcessBuilder lmBuilder = new ProcessBuilder("/home/istanbul/srilm/bin/i686-m64/ngram-count", "-text", modelPath, "-order", "3", "-lm", modelOutputPath);
    lmBuilder.redirectErrorStream();
    final Process lmProcess = lmBuilder.start();
    int result = lmProcess.waitFor(); //result becomes 0
    InputStream is = lmProcess.getInputStream();
    InputStreamReader isr = new InputStreamReader(is);
    BufferedReader br = new BufferedReader(isr);

    String line;
    while ((line = br.readLine()) != null) {
        System.out.println(line);
    }

} catch (IOException | InterruptedException e) {
    e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)

当我检查命令的输出时,我发现它工作正常。当我通过 shell 运行它时,我看到输出:

warning: discount coeff 1 is out of range: 0
warning: discount …
Run Code Online (Sandbox Code Playgroud)

java processbuilder

1
推荐指数
1
解决办法
2214
查看次数

如何将 ProcessBuilder 的输出附加到文件,而不覆盖文件中的现有数据

当尝试使用 附加输出ProcessBuilder到文件 时redirectOutput(Redirect.appendTo(outFile).file()),它总是覆盖文件中的现有数据,而不是将数据附加到现有文件。

如何从 processbuilder 将数据附加到现有文件

任何帮助,将不胜感激。

java file process processbuilder

1
推荐指数
1
解决办法
1866
查看次数

使用 ProcessBuilder 启动超过 15 个外部进程时,Akka 流会挂起

我正在构建一个具有以下流程的应用程序:

\n
    \n
  1. 有要处理的项目来源
  2. \n
  3. 每个项目都应该由外部命令处理(它会ffmpeg在最后,但对于这个简单的可重现用例,它只是cat让数据通过它传递)
  4. \n
  5. 最后,此类外部命令的输出保存在某处(同样,在本示例中,它只是将其保存到本地文本文件中)
  6. \n
\n

所以我正在执行以下操作:

\n
    \n
  1. 准备一个包含项目的源
  2. \n
  3. 制作一个 Akka 图,使用 Broadcast 将源项目扇出到单独的流中
  4. \n
  5. 各个流程ProcessBuilder结合使用Flow.fromSinkAndSource来构建此外部流程执行的流程
  6. \n
  7. 使用将数据保存到文件的接收器结束各个流。
  8. \n
\n

完整代码示例:

\n
import akka.actor.ActorSystem\nimport akka.stream.scaladsl.GraphDSL.Implicits._\nimport akka.stream.scaladsl._\nimport akka.stream.ClosedShape\nimport akka.util.ByteString\n\nimport java.io.{BufferedInputStream, BufferedOutputStream}\nimport java.nio.file.Paths\nimport scala.concurrent.duration.Duration\nimport scala.concurrent.{Await, ExecutionContext, Future}\n\nobject MyApp extends App {\n\n  // When this is changed to something above 15, the graph just stops\n  val PROCESSES_COUNT = Integer.parseInt(args(0))\n\n  println(s"Running with ${PROCESSES_COUNT} processes...")\n\n  implicit val system                          = ActorSystem("MyApp")\n  implicit …
Run Code Online (Sandbox Code Playgroud)

scala processbuilder akka akka-stream

1
推荐指数
1
解决办法
440
查看次数

GWT + ProcessBuilder

是否可以将ProcessBuilder与GWT一起使用?当我声明一个新的ProcessBuilder的实例时,我得到:

java.lang.ProcessBuilder is not supported by Google App Engine's Java runtime environment
Run Code Online (Sandbox Code Playgroud)

java gwt processbuilder

0
推荐指数
1
解决办法
961
查看次数

从ProcessBuilder执行一个jar会产生ClassNotFoundException

当我尝试从命令行执行jar时,它工作正常.我试图在另一个java程序中执行相同的jar,如下所示:

ProcessBuilder pb = new ProcessBuilder("java", "-Xmx1024m -Xms1024m -DTOOLS_DIR="/home/IM/work/dist" -Daoi=whole -jar "/home/IM/work/dist/idt_tools.jar");
pb.start()
Run Code Online (Sandbox Code Playgroud)

但是,这给了我一个ClassNotFoundException

ERR>Exception in thread "main" java.lang.NoClassDefFoundError:  -Xmx1024m -Xms1024m -DTOOLS_DIR="/home/IM/work/dist" -Daoi=whole -jar "/home/IM/work/dist/idt_tools/jar"
ERR>Caused by: java.lang.ClassNotFoundException:  -Xmx1024m -Xms1024m -DTOOLS_DIR=".home.IM.work.dist" -Daoi=whole -jar ".home.IM.work.dist.idt_tools.jar"
ERR>    at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
ERR>    at java.security.AccessController.doPrivileged(Native Method)
ERR>    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
ERR>    at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
ERR>    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
ERR>    at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
ERR>Could not find the main class: -Xmx1024m -Xms1024m -DTOOLS_DIR="/home/IM/work/dist" -Daoi=whole -jar "/home/IM/work/dist/idt_tools.jar".  Program will exit.
Run Code Online (Sandbox Code Playgroud)

为什么认为这是一堂课?你能不能在一个长字符串中指定你的参数?

java processbuilder

0
推荐指数
1
解决办法
5357
查看次数

Java:在我的程序中使用其他程序的静态方法输出

我需要读取我写的另一个java程序生成的byte [].众所周知,java中的main只能返回一个void.这是否意味着我需要使用返回类型为byte []的静态方法编写程序?如果是的话,我怎么能在我的程序中运行这个方法并在程序中保存它的返回值?这就是我在程序中的含义:

ProcessBuilder pb = new ProcessBuilder("java.exe","viewer.java","pathToViewer.java");
Process process = pb.start();
InputStream is = process.getInputStream();
byte[] bytes = IOUtils.toByteArray(is);
Run Code Online (Sandbox Code Playgroud)

什么是正确的方法?

java processbuilder

0
推荐指数
1
解决办法
183
查看次数

读取当前CPU频率

我尝试读取当前的cpu频率.经过一些研究,我发现了以下代码:

public String ReadCPUMhz2() throws IOException
{
      String[] args = {"/system/bin/cat", "/sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq"};

      ProcessBuilder cmd;
      cmd = new ProcessBuilder(args);
      Process process = null;
      process = cmd.start();

      BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream()));

      StringBuilder log=new StringBuilder();

      String line;
      Log.d("test","aha");
      while ((line = bufferedReader.readLine()) != null) {
        log.append(line + "\n");
      }
      Log.d("test",log.toString());
      return log.toString();
}
Run Code Online (Sandbox Code Playgroud)

但那并没有做任何事情.Logcat在while循环之前显示"aha",但"log"似乎是空的.我看不出我做错了什么:s?

PS:抱歉英语不好.

cpu android frequency bufferedreader processbuilder

0
推荐指数
1
解决办法
4599
查看次数

标签 统计

processbuilder ×10

java ×8

akka ×1

akka-stream ×1

android ×1

bufferedreader ×1

console ×1

cpu ×1

file ×1

frequency ×1

gwt ×1

jar ×1

process ×1

scala ×1

sh ×1

windows ×1