我知道已经提出了类似的问题,但我无法根据我的具体情况调整以前的答案,所以我非常感谢任何帮助。
我在Windows中使用以下代码,它完全正常。
try
{
Process protSpec = Runtime.getRuntime().exec(new String[]{"cmd", "/c", "obspectrophore -i Rv0001.fasta > Rv0001.spec" });
protSpec.waitFor();
}
catch (Exception e1)
{
System.out.println(e1.toString());
e1.printStackTrace();
}
尝试将其改编为Linux,我剪切了上面代码的“cmd”,“/ c”以获得
try
{
Process protSpec = Runtime.getRuntime().exec(new String[]{"obspectrophore -i Rv0001.fasta > Rv0001.spec" });
protSpec.waitFor();
}
catch (Exception e1)
{
System.out.println(e1.toString());
e1.printStackTrace();
}
现在我收到错误消息
java.io.IOException: Cannot run program "obspectrophore -i Rv0001.fasta > Rv0001.spec": java.io.IOException: error=2, No such file or directory
任何解决这个问题的想法都将不胜感激。提前谢谢!
答案 0 :(得分:0)
在环境中设置obspectrophore
,以便可以从任何目录访问它,并确保用户具有执行权限。
答案 1 :(得分:0)
cmd /c
的Linux等效项为sh -c
。在这种情况下,命令语法是相同的:
Runtime.getRuntime().exec(new String[]{
"sh", "-c", "obspectrophore -i Rv0001.fasta > Rv0001.spec"
});
您尝试过的Linux命令没有通过命令解释器运行命令,这就是它失败的原因(这相当于将Java代码粘贴到DOS提示符中,希望DOS能够解决并运行它)。