Вызов Java-программы из PHP - PullRequest
1 голос
/ 30 марта 2012

Я создал программу на Java, которая отправляет электронное письмо с моей учетной записи Gmail.Я запрограммировал его в Eclipse, и он отлично работает.Но когда я пытаюсь вызвать его из PHP, я получаю следующую ошибку:

Exception in thread "main" java.lang.NoClassDefFoundError: javax/mail/Address
  at sendVerificationEmail.main(sendVerificationEmail.java:3)
Caused by: java.lang.ClassNotFoundException: javax.mail.Address
  at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
  at java.security.AccessController.doPrivileged(Native Method)
  at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
  at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
  at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
  at java.lang.ClassLoader.loadClass(ClassLoader.java:266)

Вот команда, которую использует Eclipse:

/usr/lib/jvm/java-6-openjdk/bin/java -agentlib:jdwp=transport=dt_socket,suspend=y,address=localhost:53094 -Dfile.encoding=UTF-8 -classpath /home/****/dir/to/program/java/bin:/home/****/dir/to/program/java/lib/javamail-1.4.4/mail.jar sendEmail

Вот команда, которую использует PHP:

exec("java -classpath /home/****/dir/to/program/java/bin:/home/****/dir/to/program/java/lib/javamail-1.4.4/mail.jar sendVerificationEmail $name $email $comments");

Ответы [ 2 ]

1 голос
/ 30 марта 2012

Вам необходимо добавить файл jar, содержащий классы javax.mail ... к вашей команде:

Например, следующее добавит текущий каталог (.) И javax.jar в classpath:

(linux)   java -classpath .:javax.jar com.me.MyMailClient
(windows) java -classpath .;javax.jar com.me.MyMailClient

javax.jar это не то, что он будет называться, это просто чтобы показать вам, где вы его положили.Чтобы узнать, где Eclipse получает элементы javax.mail. *, Откройте вкладку «Проект-> Свойства-> Путь сборки-> Библиотеки».Один из перечисленных кувшинов - это то, что вам нужно (вы можете увидеть содержимое кувшинов, расстегнув молнию).Это может называться mail.jar, j2ee.jar, javamail.jar - есть несколько разных вероятных кандидатов.Поскольку ваше тестовое приложение простое, оно должно иметь несколько зависимостей, поэтому вы сможете легко его обнаружить.

Вам нужно будет поместить копию этого файла JAR рядом со сценарием запуска (в приведенном выше примере предполагается, что онтот же каталог, в котором вы запускаете команду java.)

Надеюсь, это поможет.

0 голосов
/ 30 марта 2012

Проблема в том, что ваш веб-сервер (для бывшего APACHE) не может найти файлы классов Java в пути к классам вам нужно либо изменить путь к классу, используя переменную среды CLASSPATH, на место, где находится Jar / classes, либо поместить файл classes / jar в каталог lib APACHE (APACHE / lib) и перезапустить сервер.

надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...