我寫了一個bash腳本。舉個例子,一個簡單的例子:僅當通過java應用程序打開終端時符號查找錯誤
#!/bin/bash
gnuplot -e "set terminal pdf; set output'/tmp/test.pdf'; plot [-10:10] sin(x);"
這個腳本的名字應該是test.sh。 我可以通過我的shell執行這個腳本並創建test.pdf。我應該通過一個通過ProcessBuilder調用這個腳本的Java應用程序來執行這個腳本,否則不會創建pdf。該腳本被訪問,並打開其他程序,如gedit。 awk等工程。似乎gnuplot有問題。
有誰知道這是爲什麼,我該如何解決這個問題?
的Java代碼:
String command = "/tmp/test.sh";
try {
ProcessBuilder pb = new ProcessBuilder("/bin/bash","-c",command);
pb.start();
}catch (IOExeption e1) {
e1.printStackTrace()
}
---更新---
似乎有是另一個問題。感謝ccarton和muzido,如果通過shell執行java-jar文件,則會執行gnuplot腳本。如果我把它嵌入到看起來簡單這樣execute_jar.sh另一個shell:
#!/bin/bash
java -jar test.jar
這execute_jar.sh由只能執行shell腳本和我不能修改另一個Java應用程序執行。 這個父應用程序有問題嗎?或者是一種解決方法嗎? gnuplot腳本必須通過我的test.jar執行,因爲其他參數是在jar中生成並賦予腳本的。
---更新2 ---
所以我一直在尋找更多一些,並測試一點點,我改變了Test.jar的,以便它不執行test.sh只是打開帶有「xterm」的shell。在這裏,我然後手動鍵入腳本,我得到錯誤"gnuplot: symbol lookup error: /usr/lib64/libQtSvg.so.4: undefined symbol"
任何想法?
---更新3 ---
我因子評分,因爲 「/usr/lib64/libQtSvg.so.4」 的存在是我是一個圖書館的問題。所以我嘗試export LD_LIBRARY:$LD_LIBRARY:/usr/lib64
但仍然是相同的錯誤。
---更新4 ---
我改變了標題
如果你還在爲此苦苦掙扎,請[編輯]你的問題,包括用於執行這個腳本的Java源代碼。 – Kenster
使用「rpm -qa | grep libQt」時,在由jar打開的終端和「普通」終端中都沒有出現任何內容,但該文件存在於無法查找符號的路徑中(位於/ usr /lib/libQtSvg.so.4) – nguvi