Я написал сценарий bash. Например, очень просто:Ошибка поиска символа только при открытии терминала через приложение Java
#!/bin/bash
gnuplot -e "set terminal pdf; set output'/tmp/test.pdf'; plot [-10:10] sin(x);"
Этот скрипт должен иметь имя test.sh. Я могу выполнить этот скрипт через свою оболочку и создать test.pdf. Должен ли я выполнить этот скрипт через приложение Java, которое вызывает этот скрипт через ProcessBuilder, 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()
}
--- Update ---
Там, кажется, еще один вопрос. Благодаря ccarton и muzido скрипт gnuplot выполняется, если файл java-jar выполняется через оболочку. Если я вставлять его в другую оболочку, которая выглядит упрощенным, как этот execute_jar.sh:
#!/bin/bash
java -jar test.jar
И это execute_jar.sh выполняется другой Java приложение, которое только может выполнять сценарии оболочки, и что я не могу изменить. Есть ли проблема с этим родительским приложением? Или это обходное решение? Скрипт gnuplot должен быть выполнен через мой test.jar, потому что другие параметры генерируются в банке и передаются скрипту.
--- Update 2 ---
Так что я искал немного и испытать немного я изменил test.jar так, что он не выполняет test.sh, но только открывает оболочка с «xterm». Здесь я тогда вручную набираю скрипт, и получаю ошибку "gnuplot: symbol lookup error: /usr/lib64/libQtSvg.so.4: undefined symbol"
Любые идеи?
--- Update 3 ---
Я учил, что мой быть проблемой, потому что библиотека "/usr/lib64/libQtSvg.so.4" существует. Поэтому я попробовал export LD_LIBRARY:$LD_LIBRARY:/usr/lib64
, но по-прежнему та же ошибка.
--- Update 4 ---
Я изменил название
Если вы все еще борется с этим, пожалуйста, [править] Ваш вопрос, чтобы включить свой исходный код Java для выполнения этого сценария. – Kenster
Ничего не появляется при использовании «rpm -qa | grep libQt», ни в терминале, открытом банкой, ни в «обычном», но файл существует в указанном пути, где символ не может быть просмотрен (в/usr /lib/libQtSvg.so.4) – nguvi