"/home/simulations/scripts/getDsuIp.sh"コマンドを引数なしで実行しようとしています。Java: "exec"または "ProcessBuilder"を使用してコマンドを実行すると "UNIXProcess"エラーが発生する
マシンでこのコマンドを手動で実行すると、効果的です。だからファイルは間違いなくであり、間違いなく実行可能(755)であり、同じユーザ(ルート)の下にの下にあります。このファイルを実行するJavaプログラムを実行しようとすると、問題が発生します。 私はこの問題を1台のマシンでしか見ることができません。、他の場所でも動作しますが、なぜ失敗しているのかを知りたいのですが。
Exception in thread "main" java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:58)
Caused by: java.lang.UnsatisfiedLinkError: java.lang.UNIXProcess.init()V
at java.lang.UNIXProcess.init(Native Method)
at java.lang.UNIXProcess.<clinit>(UNIXProcess.java:295)
at java.lang.ProcessImpl.start(ProcessImpl.java:130)
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1028)
at mycompany.PCtrlDsu.getDsuIP(PCtrlDsu.java:136)
at mycompany.PCtrlDsu.main(PCtrlDsu.java:41)
私も同じエラーが生じ、同様にそれを実行する他の方法を試してみました:
をこれは私に次のエラーを与えたProcessBuilderProcessBuilder pb = new ProcessBuilder("/home/simulations/scripts/getDsuIp.sh");
Process p = pb.start();
を使用してプロセスを実行
execを使用してプロセスを実行する
ここでは、私はexecを使って実行しようとしました:
String[] cmd = {"/home/simulations/scripts/getDsuIp.sh"};
Process p = Runtime.getRuntime().exec(cmd);
InputStream in = p.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(in));
String result = br.readLine();
p.waitFor();
System.out.println ("exit: " + p.exitValue());
p.destroy();
"exec"機能を実行しようとすると2行目で失敗します。
Exception in thread "main" java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:58)
Caused by: java.lang.UnsatisfiedLinkError: java.lang.UNIXProcess.init()V
at java.lang.UNIXProcess.init(Native Method)
at java.lang.UNIXProcess.<clinit>(UNIXProcess.java:295)
at java.lang.ProcessImpl.start(ProcessImpl.java:130)
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1028)
at java.lang.Runtime.exec(Runtime.java:617)
at java.lang.Runtime.exec(Runtime.java:450)
at java.lang.Runtime.exec(Runtime.java:347)
at mycompany.PCtrlDsu.getDsuIP(PCtrlDsu.java:110)
at mycompany.PCtrlDsu.main(PCtrlDsu.java:55)
私は、このソリューションを実装しようとしたプロセスビルダー
と#2を試してみてください: Running Shell Script From External Directory: No such file or directory
String script = "getDsuIp.sh";
try {
Process awk = new ProcessBuilder("/bin/bash", "/home/simulations/scripts/" + script).start();
awk.waitFor();
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
しかし、私は同じエラーを取得:
Exception in thread "main" java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:58)
Caused by: java.lang.UnsatisfiedLinkError: java.lang.UNIXProcess.init()V
at java.lang.UNIXProcess.init(Native Method)
at java.lang.UNIXProcess.<clinit>(UNIXProcess.java:295)
at java.lang.ProcessImpl.start(ProcessImpl.java:130)
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1028)
at mycompany.PCtrlDsu.getDsuIP(PCtrlDsu.java:143)
at mycompany.PCtrlDsu.main(PCtrlDsu.java:41)
誰もが知っています何が "java.lang.UnsatisfiedLin kError:java.lang.UNIXProcess "エラーの意味ですか?
Javaバージョン:
java version "1.7.0_79"
OpenJDK Runtime Environment (fedora-2.5.5.0.fc20-x86_64 u79-b14)
OpenJDK 64-Bit Server VM (build 24.51-b03, mixed mode)
ああ、ok!それは意味があります、ありがとうございます – Kayvar
うん、それは働いた! – Kayvar