Tag: runtime.exec

以编程方式重新启动Android Things

我想使用此代码重新启动运行Android Things的 RPI3 : public static void Reboot() { try { Process proc = Runtime.getRuntime().exec(new String[]{“su”, “-c”, “reboot”}); proc.waitFor(); } catch (Exception ex) { ex.printStackTrace(); } } 我收到以下错误: java.io.IOException:无法运行程序“su”:error = 13,权限被拒绝 我向清单添加了所有权限 我错过了什么吗?

Shell(bash)使用Java的runtime.exec扩展大括号

我正在尝试使用扩展命令来使用runtime.exec,但是大括号被解释为文字而不是被扩展。 这是我正在尝试做的事情: String command = “mkdir -p Foldername{1,2,3}/InnerFolder”; Runtime.getRuntime().exec( new String[] { “sh”, “-c”, command } ); 不幸的是,这给了我当前目录中名为“Foldername {1,2,3}”的单个文件夹,而不是“Foldername1”,“Foldername2”和“Foldername3”。 有没有人知道如何防止括号被解释为文字?

从Java中解析ping结果的时间部分

我设法修改程序以ping对等计算机并获取ping计数。 如何从ping计数结果中实时解析time = ?ms ? 码: public static void main(String[] args) { String ip = “192.168.1.1 -n 10”; String pingResult = “”; String pingCmd = “ping ” + ip; try{ Runtime r = Runtime.getRuntime(); Process p = r.exec(pingCmd); BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream())); String inputLine; while ((inputLine = in.readLine()) != null) { System.out.println(inputLine); pingResult […]

进程运行时传递输入

我有rsync命令在java程序中运行…我面临的问题是rsync需要输入密码,我不知道如何将此密码传递给rsync命令工作?

调用它几百次后,Java Runtime.getRuntime()。exec()失败

我有一个Java程序执行Runtime.getRuntime()。exec(“ls -l”); 很多次,一次为系统中的每个目录。 我的测试系统有超过1,000个目录和Runtime.getRuntime()。exec(“ls -l”); 似乎在480个目录之后出错了。 我得到的错误消息是“运行exec()时出错。命令:[ls,-l]工作目录:null环境:null”。 我猜它已经耗尽了一些必需的系统资源或者是吗? 有没有办法处理所有目录而不会出错? 答案的相对评论: 我应该澄清一下我使用的是Android SDK的adb.exe。 我想在不同的目录上多次执行Runtime.getRuntime()。exec(“adb shell ls -l”)之类的东西。

java Runtime.exec运行shell脚本

我正在使用Runtime.getRuntime()。exec()从java代码运行shell脚本。 当我将参数作为字符串传递时,代码工作正常 Runtime.getRuntime().exec(“sh test.sh”) 因为我必须传递带空格的路径的附加参数,所以我用String数组替换了String。 String[] cmd = {“sh test.sh”, “/Path/to my/resource file”}; Runtime.getRuntime().exec(cmd) 我也尝试过 String[] cmd = {“sh test.sh”}; Runtime.getRuntime().exec(cmd) 但他们都没有奏效。 它抛出exception java.io.IOException: Cannot run program “sh test.sh”: java.io.IOException: error=2, No such file or directory 为什么在作为String工作时传递相同的脚本文件,并且当与String数组一起使用时抛出exception。 有没有人遇到过这个问题。 请帮助我使用字符串数组作为Runtime.exec()的arugument。 提前致谢。

Runtime.exec和Android的问题

当我在我的Android设备上使用Runtime.exec时,我遇到了一个问题,而且无法弄清楚它为什么会发生… 这是我做的测试的一个例子: public class MainActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Runtime runtime = Runtime.getRuntime(); for(int i=0; i< 20; i++){ Log.d("TESTEXEC", "EXEC N°"+i+" : BEGIN"); try { Process process = runtime.exec("/system/bin/ps"); process.getErrorStream().close(); process.getOutputStream().close(); process.getInputStream().close(); process.waitFor(); } catch (Throwable e) { e.printStackTrace(); } Log.d("TESTEXEC", "EXEC N°"+i+" : END"); } } } […]

无法使用Runtime.getRuntime()。exec从jsp执行java程序

我试图通过jsp运行一个jar文件。 我使用命令Runtime.getRuntime().exec(“java -jar file.jar”); 我得到错误当我打印错误流时Unable to access jarfile file.jar 。 我尝试使用设置为当前目录的类路径运行Runtime.getRuntime().exec(“java -cp . -jar file.jar”); 但仍然得到相同的错误。 我也试过给jar文件的整个路径。 当我这样做时,jsp文件在执行exec语句后挂起。 这是我在windows中使用的行: process = Runtime.getRuntime().exec(“java -jar C:\\Users\\Jeff\\Documents\\NetBeansProjects\\WebApplication1\\file.jar”); 我使用文章中给出的streamgobbler的东西,但仍然有相同的问题(挂起)。 有人可以帮忙吗?

Linux上的Java Runtime.exec()参数

好的,这就是问题所在:我有3个类MyClass1和MyClass2以及ExecClass。 我转到我的命令提示符并执行此操作: $java MyClass1 -exec “java MyClass2 arg1 arg2” 这很完美。 现在在ExecClass中我有以下行: Runtime.getRuntime().exec(“java MyClass1 -exec \”java MyClass2 arg1 arg2\””); 问题是如果你打印第二个字符串与第一个字符串完全相同,但是当我的ExecClass运行它时,MyClass1抱怨:无法识别的参数arg1并失败。 经过一些调试后,我发现在第一种情况下,当我直接从终端调用时,引号中的整个字符串是1个参数(arg [1]),其中在第二种情况下,arg.length = 5和它基本上将它们分开……因为我有些未知的理由。 我只需要知道一个工作场所,如果有人知道,也就是我的Runtime.exec()工作。 PS:在我的Windows机器上,这样的问题不会仅发生在Linux上。 这是一个ubuntu destrution Kernel:2.6.32-279.14.1.el6.x86_64。

Perl脚本在终端中运行,但在从Java程序调用时不运行

我正在运行一个Perl脚本,用另一个字符串替换字符串: perl -pi.back -e ‘s/str1/str2/g;’ path/to/file1.txt 当我从终端运行此命令时,它很好地将给定文件中str1所有出现替换为str2 。 当我从java运行它时它确实访问该文件但没有替换发生: Runtime.getRuntime().exec(“perl -pi.back -e ‘s/str1/str2/g;’ path/to/file1.txt”); 我确定它访问该文件(该文件似乎在gedit中编辑(需要重新加载))。 我尝试过Java ProcessBuilder类但是会出现相同的结果。 当我将Runtime.exec()或ProcessBuilder与其他命令(如gedit newFile.txt )一起使用时,它们运行良好。 具有讽刺意味的是,我从java打印了上面的perl命令,并在终端中获取了粘贴,并完成了替换操作! 使用这些命令没有exception或错误。 (我用try和catch来确保这一点)。 我还在cmd中使用/usr/bin/perl而不是perl来确保执行perl cmd。 那么您认为问题是什么? 编辑: 我通过从java中的命令中删除引号来解决这个问题。 感谢@ikegami的帮助。 所以工作版本是: perl -pi.back -es/str1/str2/g; path/to/file1.txt 代替 perl -pi.back -e ‘s/str1/str2/g;’ path/to/file1.txt