Java runtime exec ioexception

Как решить «java.io.IOException: ошибка = 12, не удается выделить память», вызывая Runtime # exec ()?

В моей системе я не могу запустить простое Java-приложение, которое запускает процесс. Я не знаю, как решить. Не могли бы вы дать мне подсказки, как решить? Программа:

[[email protected] sisma-acquirer]# cat prova.java import java.io.IOException; public class prova < public static void main(String[] args) throws IOException < Runtime.getRuntime().exec("ls"); >> 
[[email protected] sisma-acquirer]# javac prova.java && java -cp . prova Exception in thread "main" java.io.IOException: Cannot run program "ls": java.io.IOException: error=12, Cannot allocate memory at java.lang.ProcessBuilder.start(ProcessBuilder.java:474) at java.lang.Runtime.exec(Runtime.java:610) at java.lang.Runtime.exec(Runtime.java:448) at java.lang.Runtime.exec(Runtime.java:345) at prova.main(prova.java:6) Caused by: java.io.IOException: java.io.IOException: error=12, Cannot allocate memory at java.lang.UNIXProcess.(UNIXProcess.java:164) at java.lang.ProcessImpl.start(ProcessImpl.java:81) at java.lang.ProcessBuilder.start(ProcessBuilder.java:467) . 4 more 
[[email protected] sisma-acquirer]# java -version java version "1.6.0_0" OpenJDK Runtime Environment (IcedTea6 1.5) (fedora-18.b16.fc10-i386) OpenJDK Client VM (build 14.0-b15, mixed mode) [[email protected] sisma-acquirer]# cat /etc/fedora-release Fedora release 10 (Cambridge) 

EDIT: решение Это решает мою проблему, я не знаю точно, почему: echo 0 > /proc/sys/vm/overcommit_memory Up-votes для тех, кто может объяснить:) Дополнительная информация, верхний вывод:

top - 13:35:38 up 40 min, 2 users, load average: 0.43, 0.19, 0.12 Tasks: 129 total, 1 running, 128 sleeping, 0 stopped, 0 zombie Cpu(s): 1.5%us, 0.5%sy, 0.0%ni, 94.8%id, 3.2%wa, 0.0%hi, 0.0%si, 0.0%st Mem: 1033456k total, 587672k used, 445784k free, 51672k buffers Swap: 2031608k total, 0k used, 2031608k free, 188108k cached 
[[email protected] sisma-acquirer]# free total used free shared buffers cached Mem: 1033456 588548 444908 0 51704 188292 -/+ buffers/cache: 348552 684904 Swap: 2031608 0 2031608 

Это либо ошибка в версии для Linux, либо у вас есть проблемы с привилегиями. Вы можете заглянуть в UnixProcess: 164 в источнике, чтобы узнать, что он пытается выделить.

Читайте также:  Windows property in javascript

Я разместил ссылку на бесплатную библиотеку, которая решает вашу проблему, но модератор удалил мой ответ без объяснения причин. В интересах сообщества я еще раз попробую в качестве комментария: Ваша проблема с памятью решается с помощью Yajsw, который в Linux использует вызовы библиотеки C для создания процесса. Читайте об этом здесь: sourceforge.net/projects/yajsw/forums/forum/810311/topic/…

Я сталкивался с этим с openjdk, после того как я заменил его на официальный sun jdk, разветвление работает нормально . Если вы не хотите заменять openjdk, хак ‘overcommit_memory’ также работает

Источник

IOException while executing runtime.exec

send pies

posted 15 years ago

  • Report post to moderator
  • I am trying to execute one shell script from another folder using below mentioned code

    it is throwing IOException, ca you please tell me if I am doing something wrong.

    send pies

    posted 15 years ago

  • Report post to moderator
  • Are you handling the input and output streams of the process you started correctly? See this article for how to do it.

    send pies

    posted 15 years ago

  • Report post to moderator
  • please find my code attached below

    I am getting following exception

    java.io.IOException: No such file or directory
    at 0x0000002a95b6c946: java.lang.Throwable.Throwable(java.lang.String) (/usr/lib/../lib64/libgcj.so.3)
    at 0x0000002a95b60039: java.lang.Exception.Exception(java.lang.String) (/usr/lib/../lib64/libgcj.so.3)
    at 0x0000002a95b73379: java.io.IOException.IOException(java.lang.String) (/usr/lib/../lib64/libgcj.so.3)
    at 0x0000002a95b4f67b: java.lang.ConcreteProcess.startProcess(java.lang.String[], java.lang.String[]) (/usr/lib/../lib64/libgcj.so.3)
    at 0x0000002a95c78c7e: java.lang.ConcreteProcess.ConcreteProcess(java.lang.String[], java.lang.String[]) (/usr/lib/../lib64/libgcj.so.3)
    at 0x0000002a95b6308e: java.lang.Runtime.exec(java.lang.String[], java.lang.String[]) (/usr/lib/../lib64/libgcj.so.3)
    at 0x0000002a95b62fee: java.lang.Runtime.exec(java.lang.String, java.lang.String[]) (/usr/lib/../lib64/libgcj.so.3)
    at 0x0000002a95b62f4c: java.lang.Runtime.exec(java.lang.String) (/usr/lib/../lib64/libgcj.so.3)
    at 0x0000002a95c92d74: ffi_call_UNIX64 (/usr/lib/../lib64/libgcj.so.3)
    at 0x0000002a95c92ba4: ffi_call (/usr/lib/../lib64/libgcj.so.3)
    at 0x0000002a95c9223f: ffi_java_raw_call (/usr/lib/../lib64/libgcj.so.3)
    at 0x0000002a95b39755: _Jv_InterpMethod.continue1(_Jv_InterpMethodInvocation) (/usr/lib/../lib64/libgcj.so.3)
    at 0x0000002a95b39ede: _Jv_InterpMethod.run(ffi_cif, void, ffi_raw, _Jv_InterpMethodInvocation) (/usr/lib/../lib64/libgcj.so.3)
    at 0x0000002a95b37d3a: _Jv_InterpMethod.run_normal(ffi_cif, void, ffi_raw, void) (/usr/lib/../lib64/libgcj.so.3)
    at 0x0000002a95c922b6: ?? (. 0)
    at 0x0000002a95c92ca9: ffi_closure_UNIX64_inner (/usr/lib/../lib64/libgcj.so.3)
    at 0x0000002a95c92e5c: ?? (. 0)
    at 0x0000002a95c92d74: ffi_call_UNIX64 (/usr/lib/../lib64/libgcj.so.3)
    at 0x0000002a95c92ba4: ffi_call (/usr/lib/../lib64/libgcj.so.3)
    at 0x0000002a95c9223f: ffi_java_raw_call (/usr/lib/../lib64/libgcj.so.3)
    at 0x0000002a95b39755: _Jv_InterpMethod.continue1(_Jv_InterpMethodInvocation) (/usr/lib/../lib64/libgcj.so.3)
    at 0x0000002a95b39ede: _Jv_InterpMethod.run(ffi_cif, void, ffi_raw, _Jv_InterpMethodInvocation) (/usr/lib/../lib64/libgcj.so.3)
    at 0x0000002a95b37d3a: _Jv_InterpMethod.run_normal(ffi_cif, void, ffi_raw, void) (/usr/lib/../lib64/libgcj.so.3)
    at 0x0000002a95c922b6: ?? (. 0)
    at 0x0000002a95c92ca9: ffi_closure_UNIX64_inner (/usr/lib/../lib64/libgcj.so.3)
    at 0x0000002a95c92e5c: ?? (. 0)
    at 0x0000002a95b49e75: gnu.gcj.runtime.FirstThread.call_main() (/usr/lib/../lib64/libgcj.so.3)
    at 0x0000002a95bb06a8: gnu.gcj.runtime.FirstThread.run() (/usr/lib/../lib64/libgcj.so.3)
    at 0x0000002a95b55225: _Jv_ThreadRun(java.lang.Thread) (/usr/lib/../lib64/libgcj.so.3)
    at 0x0000002a95b278b8: _Jv_RunMain(java.lang.Class, byte const, int, byte const, boolean) (/usr/lib/../lib64/libgcj.so.3)
    at 0x0000000000400be2: ?? (. 0)
    at 0x0000002a9648f197: __libc_start_main (/lib64/tls/libc.so.6)
    at 0x00000000004009aa: ?? (. 0)

    Источник

    Оцените статью