Я пытаюсь разрешить apache и PHP выполнять Java-программу, которая выводит в std: out, но я получаю сообщение «Ошибка: не удалось найти или загрузить основной класс». Это все происходит на Распиане.
У меня есть мой index.php в var / www и моя java-программа в var / www / pathy-lang
Pathy.class, где мой main () находится, и я получаю ошибку, когда я пытаюсь выполнить java pathy-lang/Pathy
либо в терминале, либо с помощью оператора backtick в моем PHP-файле. Pathy работает, если я нахожусь в той же директории, что и он, и выполняю java Pathy
в командной строке.
Я бы предпочел использовать pathy-lang в другом месте (желательно где-то вроде / usr / local / lib), но я буду только думать о том, как только я получу его работающим в одной папке.
Я понимаю, что apache использует пользователя www-data для выполнения каких-либо задач, это вообще усложнит ситуацию?
Я предполагаю, что это связано с моими правами доступа к файлу, PATH или CLASSPATH. Но имея очень мало опыта работы с Linux, я понятия не имею, с чего начать пытаться разобраться в этом. Из-за ответа «not found» я предполагаю, что это ошибка PATH или CLASSPATH, но при ответе вы могли бы также указать настройку разрешения, как если бы была установлена переменная PATH, которая, вероятно, станет следующим препятствием.
Друг помог мне и рассказал о опции -cp в java для определения пути к классам. Кажется, что моя догадка была правильной, потому что я установил classpath в .profile, он не будет работать ни для какого другого пользователя, кроме меня.
Определив полный путь к классу в параметре -cp, а затем указав, в каком классе находится main (), это сработало.
Других решений пока нет …