我试图在一个程序中将少量特定路径作为字符串arg传递给另一个java程序。我收到ArrayIndexOutOfBoundsException
错误但是当我在命令行中传递完全相同的arg时它完全正常
命令行中可以使用的是什么:
program1 /filepath/{A,B,C}/*.zip
我想要做的就是给我一个错误:
program2 [call program 1]:
status = ToolRunner.run(conf, program1, new String[]{"/filepath/{A,B,C}/*.zip"});
我不知道如何以这种方式传递它,即使我想传递所有路径并更改第二个程序我不知道如何聚合所有路径并将其指定为输入流。
感谢您的帮助, 谢谢:))
答案 0 :(得分:0)
ToolRunner.run()
方法接收参数:
Configuration
对象Tool
对象String
对象Tool
个参数数组
你的" program1"扩展Tool
接口的对象?出现在你所使用的名字上,它似乎更像是对某些人的反对"二进制"或可执行的东西......
请查看documentation。
ToolRunner
通常在Hadoop应用程序中用作:
public final class MyMRClass extends Configured implements Tool {
...
public static void main(String[] args) throws Exception {
int res = ToolRunner.run(new Configuration(), new MyMRClass(), args);
System.exit(res);
} // main
@Override
public int run(String[] args) throws Exception {
Configuration conf = this.getConf();
Job job = Job.getInstance(conf, "some job name");
...
}
}