我有一个 Android 应用程序正在尝试(但失败)使用 ProcessBuilder
启动 native 进程。 。这是我所拥有的:
String[] args = {"/data/data/com.me.myapp/files/myexec", "param1", "param2"};
Process process = new ProcessBuilder(args)
.directory(new File("/data/data/com.me.myapp/files/somedir"))
.start();
process.waitFor();
(注意:出于本示例的目的,我已对路径进行了硬编码。真正的应用程序应使用 Context.getFilesDir()
。)
这里需要注意一些事项:
- 该可执行文件是使用 NDK 针对 ARMv6 进行交叉编译的。
- 二进制文件确实设置了可执行位。
- 我可以从
adb
运行可执行文件外壳。
但是,当运行上面的代码时,出现异常:
Error running exec(). Command: [/data/data/com.me.myapp/files/myexec, param1, param2] Working Directory: /data/data/com.me.myapp/files/somedir ...
为什么我的应用程序不能 exec
可执行文件?
最佳答案
哇 - 提出问题后只花了大约 2 分钟,我就发现我做错了什么。
问题很简单,在运行 exec
之前工作目录不存在。
关于java - 为什么在提供绝对文件名时 ProcessBuilder 无法启动我的可执行文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15596123/