繁体   English   中英

从PHP调用Java程序

[英]Call Java program from PHP

我创建了一个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");

您需要将包含javax.mail ...类的jar文件添加到命令中:

例如,以下内容将当前目录(。)和javax.jar添加到类路径:

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

javax.jar并不是它的名字,它只是向您展示放置它的位置。 要找出Eclipse在哪里获取javax.mail。*项目,请查看您的Project-> Properties-> Build Path-> Libraries选项卡。 您需要的是其中列出的一个罐子(您可以通过解压缩查看罐子的内容)。 它可能被称为mail.jar,j2ee.jar,javamail.jar-有一些不同的候选对象。 由于您的测试应用程序很简单,因此它应该具有很少的依赖性,因此您可以轻松发现它。

您将需要将此jar文件的副本放在运行脚本附近(上面的示例假定它与您运行java命令的目录位于同一目录中)。

希望能有所帮助。

问题在于,您的网络服务器(例如APACHE之前的服务器)无法在类路径中找到Java类文件,您需要做的就是使用CLASSPATH环境变量将类路径更改为Jar /类所在的位置,或将classes / jar文件放在APACHE的lib目录(APACHE / lib)中,然后重新启动服务器。

希望能帮助到你

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM