使用 Java 程序执行在 Python 中编写的 Linux 文件

Execute Linux file written in Python using Java program

我正在使用 YCSB(Yahoo! Cloud Serving Benchmark) 来测量 2 个节点的性能 Cassandra( 2.0.2) 集群部署在 CentOS 上。为了使用 YCSB 加载数据,我执行了以下命令 --

bin/ycsb load cassandra -P workloads/cassandraLoadA -s files/load.dat

此行使用 属性 文件 cassandraLoadA 并存储在 load.dat 中生成的 YCSB。这里ycsb文件写在Python。现在我想从 Java 程序中执行上面的代码。我尝试使用 ProcessBuilderRuntime 对象但失败了。
使用 ProcessBuilder 对象 -

ProcessBuilder builder = new ProcessBuilder("/DIRECTORY_HERE/bin/ycsb","load","cassandra","-P", "workloads/cassandraLoadA","-s","files/load.dat");
Map<String, String> environ = builder.environment();
final Process process = builder.start();

使用运行时对象 -

Process p = Runtime.getRuntime().exec("cd /DIRECTORY_HERE/bin/ycsb load cassandra -P workloads/cassandraLoadA -s files/load.dat");
p.waitFor();

Q1:我是不是做错了什么?
Q2 : 如何实现?

最好的问候-
阿维乔伊

尝试将整个命令组成一个字符串,然后将其传递给 ProcessBuilder

在cd和执行命令之间添加'&&', 试试这个:

Process p = Runtime.getRuntime().exec("cd /DIRECTORY_HERE/bin && ycsb load cassandra -P workloads/cassandraLoadA -s files/load.dat");

p.waitFor();

希望对你有所帮助!