Hey guys. Başka bir Java sınıfını çalıştıran yeni bir Java süreci yaratan bir Linux ortamında kullanılmak üzere tasarlanan Java'da bir program üzerinde çalışıyorum, ancak bununla sorun yaşıyorum. Sonunda bütün sorunlarımı çözdüm. Benim Java programı Linux'ta Java Runtime.exec sıkıntıları
Runtime.getRuntime().exec(new String[] { "/bin/bash", "-c", "'java -classpath /home/kevin/workspace/Misc/bin HelloWorld'" })
çağırma ya stdout'u/stderr'e içinde
/bin/bash: /usr/lib/jvm/java-6-openjdk/jre/bin/java -classpath /home/kevin/workspace/Misc/bin HelloWorld: No such file or directory
döndürür. Ben
Runtime.getRuntime().exec(new String[] { "/bin/bash -c 'java -classpath /home/kevin/workspace/Misc/bin HelloWorld'" })
çalışırsanız ben basit
Runtime.getRuntime().exec("/bin/bash -c 'java -classpath /home/kevin/workspace/Misc/bin HelloWorld'")
bana
-classpath: -c: line 0: unexpected EOF while looking for matching `''
-classpath: -c: line 1: syntax error: unexpected end of file
Stdout'a gelen/stderr'yi verir kullanarak,
Cannot run program "/bin/bash -c 'java -classpath /home/kevin/workspace/Misc/bin HelloWorld'": java.io.IOException: error=2, No such file or directory
...
Caused by: java.io.IOException: java.io.IOException: error=2, No such file or directory
Ve nihayet bir Java istisna olsun.
Bu arada, (dosyanın en üstünde!/Bin/bash hiçbir #) Yeni bir satır .sh dosya oluşturma (ve uygun izin atama) sadece bununla
/bin/bash -c 'java -classpath /home/kevin/workspace/Misc/bin HelloWorld'
ile doğru çıktı verir hata yok.
Kullanım Runtime.exec kullanımının oldukça karmaşık olduğunu ve daha önce aldığım bazı büyük sorunları zaten çözdüğümü anlıyorum, ancak bu sorun sadece düz bulmacalar (örneğin Runtime.exec'in StringTokenizer'ın kullanımı İçlerinde boşluk bulunan komutlar, bu yüzden String dizilerini kabul eden aşırı yüklemeyi başlattım). Bununla birlikte, hala sorun yaşıyorum ve nedenini anlamıyorum.
Efendim, en iyisisiniz. Cevabın bu kadar basit olduğuna inanamıyorum! Çok teşekkür ederim, böyle bir şey yapmayı asla düşünmezdim. –