![](/img/trans.png)
[英]ClassNotFound Error when running Java .class file in Ubuntu terminal
[英]Text file is created when running code from the terminal, but not when running it in Java
public static void main(String[] args) throws Exception {
System.setOut(new PrintStream(
new FileOutputStream("/home/main/smt/output/out.txt")));
try {
String line;
Process p = Runtime.getRuntime().exec(
"/home/main/smt/tools/moses-2010-08-13/moses/moses-cmd/src/moses " +
"-f /home/main/smt/work/model/moses.ini " +
"< /home/main/smt/work/corpus/dataset.en" );
BufferedReader in = new BufferedReader(
new InputStreamReader(p.getInputStream()) );
while ((line = in.readLine()) != null) {
System.out.println(line);
}
in.close();
}
catch (Exception e) {
// ...
}
}
命令
home/main/smt/tools/moses-2010-08-13/moses/moses-cmd/src/moses
-f /home/main/smt/work/model/moses.ini
< /home/main/smt/work/corpus/dataset.en
>/home/main/smt/output/out.txt
在Linux终端中执行并创建out.txt
。 但是在Java中,不会创建out.txt
。
dataset.en
是输入文件。 使用模型中src
和moses.ini
中的exe moses.ini
,可以转换dataset.en中的内容并将其保存在out.txt
。 但是在这里运行此代码时,不会创建out.txt
。 我从命令中删除了将输出保存到文件中的方法,尽管控制台中什么也没有显示。 如果我更改Process p = Runtime.getRuntime().exec(ls)
其工作正常。
Shell可以解释重定向和参数。 您应该尝试
String [] cmd = {“ / bin / ksh”,“ -c”,“您的命令<infile”};
流程= Runtime.getRuntime()。exec(cmd);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.