- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在使用以下代码从 Java 运行 Linux 命令,但出现内存泄漏错误。 PFA 错误和代码。如果您已经遇到过这个问题,请给我一些解决方案。
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1042)
at java.lang.Runtime.exec(Runtime.java:615)
at java.lang.Runtime.exec(Runtime.java:448)
at java.lang.Runtime.exec(Runtime.java:345)
at com.comcast.xarc.services.XarcHomeService.executeCommandLine(XarcHomeService.java:160)
at com.comcast.xarc.struts.action.XarcHomeAction.execute(XarcHomeAction.java:1095)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:421)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:226)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1164)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:415)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1023)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:722)
Caused by: java.io.IOException: error=2, No such file or directory
at java.lang.UNIXProcess.forkAndExec(Native Method)
at java.lang.UNIXProcess.<init>(UNIXProcess.java:135)
at java.lang.ProcessImpl.start(ProcessImpl.java:130)
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1023)
... 27 more
May 05, 2015 3:17:12 AM org.apache.coyote.AbstractProtocol pause
INFO: Pausing ProtocolHandler ["http-bio-8080"]
May 05, 2015 3:17:12 AM org.apache.coyote.AbstractProtocol pause
INFO: Pausing ProtocolHandler ["ajp-bio-8009"]
May 05, 2015 3:17:12 AM org.apache.catalina.core.StandardService stopInternal
INFO: Stopping service Catalina
log4j: setFile called: C:/2015-05-05/2015-05-05.log, false
log4j: setFile ended
log4j: setFile called: C:/2015-05-05/2015-05-05.log, false
log4j: setFile ended
May 05, 2015 3:17:14 AM org.apache.catalina.loader.WebappClassLoader clearReferencesThreads
SEVERE: The web application is still processing a request that has yet to finish. This is very likely to create a memory leak. You can control the time allowed for requests to finish by using the unloadDelay attribute of the standard Context implementation.
May 05, 2015 3:17:14 AM org.apache.coyote.AbstractProtocol stop
INFO: Stopping ProtocolHandler ["http-bio-8080"]
<小时/>
try {
// run the Unix "ps -ef" command
// using the Runtime exec method:
Process p = Runtime.getRuntime().exec("cd run;./run.sh");
BufferedReader stdInput = new BufferedReader(new
InputStreamReader(p.getInputStream()));
BufferedReader stdError = new BufferedReader(new
InputStreamReader(p.getErrorStream()));
// read the output from the command
System.out.println("Here is the standard output of the command:\n");
while ((s = stdInput.readLine()) != null) {
System.out.println(s);
}
// read any errors from the attempted command
System.out.println("Here is the standard error of the command (if any):\n");
while ((s = stdError.readLine()) != null) {
System.out.println(s);
}
System.exit(0);
}
catch (IOException e) {
System.out.println("exception happened - here's what I know: ");
e.printStackTrace();
System.exit(-1);
}
最佳答案
问题的根本原因是
Caused by: java.io.IOException: error=2, No such file or directory
at java.lang.UNIXProcess.forkAndExec(Native Method)
at java.lang.UNIXProcess.<init>(UNIXProcess.java:135)
at java.lang.ProcessImpl.start(ProcessImpl.java:130)
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1023)
该问题是由于您尝试运行的脚本命令导致的,它正在查找无效的目录,并且您收到 IOException
不存在这样的文件或目录。确保您提供了正确的路径并尝试再次启动 apache
关于java - Linux环境下使用Java中的Runtime.getRuntime().exec执行命令时出现内存泄漏问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30047242/
尝试使用一些自定义数据(-p 标志)调用 ping。由于我需要传递参数,因此使用接受字符串数组的 exec() 重载似乎很直观。它一直失败,所以我尝试了与一长串相同的精确输入,现在一切都很好。我不知道
在下面的例子中,Java中调用“php hello.php”的两种方法有什么区别? p1 对 p2? String[] commands; String command = "php hello.ph
我在编译程序时遇到的问题是java无法识别“.getRuntime()”方法。下面是我的代码: import java.lang.*; public class Temp {
我正在阅读有关如何在运行 android 2.2 的自定义设备(中文框)上不在 dalvik(例如,后台 native 进程)内运行的 android 中获取正在运行进程的 PID 的信息,似乎没有在
我在 Java 1.8 上调用 p = Runtime.getRuntime().exec(command)。该命令调用 bash 脚本如下: #!/bin/bash args=("$@") cat
Runtime.getRuntime().freeMemory() 返回空闲堆内存空间还是堆+非堆内存空间? 最佳答案 javadoc说: @return an approximation to th
我想在 java 程序中使用 Runtime.getRuntime().exec 完整的代码片段如下,但我的问题归结为当我在 Runtime.getRuntime().exec(command),但是
我正在我的程序中构建某种更新程序功能。当检测到更新时,程序应下载 updater.jar 并终止。之后,updater.jar 将下载该程序的新版本并删除旧版本。这就是我的主程序运行更新程序的方式:
当我在 Windows 命令提示符中运行此命令时,它会打开默认浏览器并加载相应的页面: START: http://google.com 我尝试使用下面的 Java 代码执行相同的操作,但收到错误消息
我试图在 java 中执行终端命令,但得到错误的结果(即使该命令正在执行)。当我将相同的命令粘贴到终端时,它会产生正确的输出。我猜测问题是由于重定向字符('')而发生的,但我还没有找到解决方案。我正在
我正在尝试让我的 java 程序从命令提示符运行 svn 命令,这会将日志写入 xml 文件。 这就是我想要它做的事情: Runtime.getRuntime().exec("cmd.exe /c s
我正在尝试通过Java将curl命令作为进程执行。当我执行它时,我根本没有得到任何输出。当我通过命令行执行相同的命令时,我得到了正确的输出。 URL 以 XML 形式返回输出。 这是我的 Java 程
我正在尝试将我编写的 2 个简单程序合并到一个 .jar 中。我将两个 .jars 打包成一个新的,并使用 Runtime.getRuntime().exec 方法来执行它们。 代码: public
我正在尝试从我的 java 应用程序运行 *.bat 文件(它能够运行多个命令并一一检索输出)。 我的目的是发送一个命令,读取输出,使用此输出作为第二个命令,然后再次检索输出。 为了实现这一目标,通过
我正在尝试计算此 stub 的运行时内存使用情况。这在 Eclipse 中工作正常,但是当我在 Linux 服务器上运行相同的代码时,它除了 0 之外不打印任何内容。服务器配置:64位,4核服务器,1
我发现以下代码使用 Runtime.getRuntime().exec 运行任意程序(例如 Notepad.exe )。 public class RuntimeDemo { public st
我创建了一个类来处理 Android 应用程序中的根命令,该类在大多数情况下都运行良好。我使用 Runtime.getRuntime().exec("su") 创建进程,然后使用 DataOutput
基本上,当我输入这些命令时手动打开终端,筛选程序可以运行并写入一个 .key 文件,但是当我尝试从我的程序中调用它时,没有任何内容被写入。 我是否正确使用了 exec() 方法?我查看了 API,但似
我在让 .getruntime.exec() 正常工作时遇到了一些问题。这是处理该部分的代码: while (line != null) { String name = line; Strin
我目前正在使用 Java 制作 Firefox 插件开发 GUI 工具。但是,当我尝试获取 .bat 的输出时,我陷入了困境。文件。 当我运行.bat时file using java 我可以看到输出,
我是一名优秀的程序员,十分优秀!