我试图在Linux中执行:
command[0] = "~/test/bin/runScript_sh";
Runtime.getRuntime().exec(command);
但得到异常产生java.io.IOException:不能运行程序
误差= 2,没有这样的文件或目录
可能是因为它无法计算波浪。
可以做些什么?
我试图在Linux中执行:
command[0] = "~/test/bin/runScript_sh";
Runtime.getRuntime().exec(command);
但得到异常产生java.io.IOException:不能运行程序
误差= 2,没有这样的文件或目录
可能是因为它无法计算波浪。
可以做些什么?
我将取代它自己。
if(path.s.substring(0,1).contains("~"))
path = path.replaceFirst("~",System.getProperty("user.home"));
它得到你想要的字符串。
您可以获取用户的主目录System.getProperty
:
command[0] = System.getProperty("user.home") + "/test/bin/runScript_sh";
当你在shell命令提示符下运行的命令,之类的东西~
扩张,报价处理,通配符,$变量扩展,输入/输出上都是由壳...处理重定向和管道和儿子,它要求操作系统之前运行您的程序(一个或多个)。
当您运行使用命令Runtime.exec
,你有三种选择:
使用exec来启动子shell来运行命令; 例如
Runtime.getRuntime().exec("/bin/sh", "-c", "~/test/bin/runScript_sh");
这是一个简单的情况下,这样可能矫枉过正。 但是,如果你正在尝试做更复杂的东西,然后一个孩子壳牌确能简化的东西。
1 -事实上波浪号完全兼容外壳交接是相当复杂的。
项目如~
和$HOME
是shell扩展
你必须扩大你的程序这些项目,然后替换它们(提示:从操作系统性能得到他们,看到此页)