| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Perl: Общие вопросы > Perl & System() & Java |
| Автор: DOKA 14.8.2007, 14:20 |
| Добрый день! Столкнулся с непонятной проблемой. print system("ls") - работает print system("ls -la") - работает print system("java") - работает print system("java -v") - не работает - ошибка 256 print system("java -jar /var/www/reg/myJar.jar") - не работает - ошибка 512 А мне как раз нужны именно последняя команда. По сути необходимо запустить jar (с некоторыми параметрами) лежащий в той же дире, что и скрипт и выдать в виде странички. Что за ошибки 256 и 512 perldoc -f system умалчивает :( Может у кого-нибудь есть идеи? |
| Автор: DOKA 14.8.2007, 15:40 | ||
1) Что за perror? Perldoc молчит, в шелле такой команды тоже нету... 2) Да, естественно, в шелле всё вышенаписаное выполняется отлично. |
| Автор: Nab 14.8.2007, 15:47 | ||||
попробуйте так:
хотя если нужен результат то возможно так лучше будет
|
| Автор: arto 14.8.2007, 19:35 |
| java в $PATH ? |
| Автор: DOKA 14.8.2007, 23:36 | ||||||||||
Обы варианта не работают. :( Добавлено @ 23:38
Да.
К тому же просто system('java') отрабатывает. |
| Автор: Nab 14.8.2007, 23:44 |
| ой, этож под линуксом я подозреваю, тогда может вот так print system('java', '-jar', '/var/www/reg/myJar.jar'); |
| Автор: Rigel 15.8.2007, 11:29 | ||||
Обы варианта не работают. :( [/QUOTE] Конечно не работают. $respp = `java -jar /var/www/reg/myJar.jar`; Это должно работать. У меня, во всяком случае, с параметрами так работет. И не надейтесь на пути по-умолчанию, вызывайте все с полным путем. |
| Автор: amg 15.8.2007, 16:16 | ||||
Rigel, даже любопытно стало, как
|
| Автор: dimes 15.8.2007, 16:43 |
| если `` вернет массив то различия будут Добавлено через 6 минут и 35 секунд вот только на работоспособность это никак не влияет DOKA, если вариант Nab не сработает, можно приступать к пляскам с бубном. Впрочем можно по пребывать поиграться с путями (надеюсь ты скрипт в шеле дергаешь?) Я не знаю как работает команда "java -jar /var/www/reg/myJar.jar" нужно ли там общаться в процессе установки? |
| Автор: Rigel 15.8.2007, 19:04 | ||
Абсолютные пути пропишите |
| Автор: amg 16.8.2007, 08:05 |
dimes, я же специально оговорился: если не трогать $\ и т.п. (еще $, может влиять на результат). С этой оговоркой не представляю себе, какие могли бы быть различия. По теме. Непонятно, почему так происходит. Я с подобным ни разу не сталкивался. Вызов с консоли и через system с несколькими аргументами всегда отрабатывали идентично. Что возвращает system? Rigel, правильно советует, лучше прописать на всякий случай абсолютный путь, причем на сам исполняемый файл (возможно, /usr/bin/java - это симлинк, на /usr/lib/java/bin/java например). И лучше пользоваться вызовом system с несколькими аргументами, как Nab советовал: тогда шелл не будет участвовать в вызове команды и всяких косяков меньше. |
| Автор: dimes 16.8.2007, 08:41 | ||
|
| Автор: DOKA 17.8.2007, 14:17 |
| Пробовал указывать реальный путь к java - /usr/lib/jvm/java-1.5.0-sun... - ошибка 512 Пробовал делать my $out = system $cmd; print $out; - ошибка 512 Пробовал передавать в system массив - ошибка 512 :( В принципе проблему частично решил модифицировав .jar в .war (сервлет) и запустив его под Apache Tomcat, но странно почему perl не может нормально вызывать jar'. |
| Автор: tishaishii 22.8.2007, 16:38 |
| Ему до расширения и самого файла дела нету. И до командной строки тоже ему дела нету. Ты думаешь, что perl парсит команду в кавычках и потом её сам выполняет. Тогда вместе с Perl ещё и java и ls должны поставляться. И вообще отдельная PerlOS и железо. |