Я пытаюсь запустить java-файл, который находится на моем веб-сервере, из кода c. Когда я загружаю веб-страницу, скрипт perl вызывает файл c, который затем вызывает файл java.
У меня настроен вызов, как в моем файле c:
System(java -cp <path> MyClass);
Но этот вызов System() возвращает 256 - (я думаю, файл не найден).
Я также пробовал:
System(cd /<path> && java MyClass);
И получить такие же результаты.
Если я запускаю ту же самую команду из терминала через ssh, она работает нормально, просто когда я пытаюсь запустить код из своего браузера, он выдает эту ошибку.
Любые идеи, если мой синтаксис неверен? Или я делаю что-то еще не так? Это как-то связано с цепочкой perl > c > java, которую я вынужден использовать?
EDIT Похоже, что среда выполнения c не смотрела на $PATH. Я добавил абсолютный путь к java.exe, и это сработало! Ууу
TLDR
решение:
System("/opt/jdk1.6.0_43/bin/java -cp <path> MyClass");
java -cp <path> MyClass
прямо из Perl-скрипта? - person Kninnug   schedule 12.04.20131
. - person syb0rg   schedule 12.04.2013System(java -cp <path> MyClass);
не должен даже компилироваться. - person Kninnug   schedule 12.04.2013system(java -cp /theory/www/bin/tree MyClass);
правильно? - person squiguy   schedule 12.04.2013fork()
, а затемexec()
из только что созданного процесса. - person syb0rg   schedule 12.04.2013system
ожидаетstring
, верно? Например.system("ls -l")
; - person chrsblck   schedule 12.04.2013PATH
включает двоичный путьjava
... Он может иметь конфигурацию, отличную от вашей. - person Bechir   schedule 12.04.2013system("pwd");
system(echo $PATH);`, чтобы проверить, работают ли нормальные команды, и узнать, где вы находитесь/что такоеPATH
. - person not all wrong   schedule 12.04.2013