«
PHP调用java类常见配置错误

时间:2008-5-31    作者:Deri    分类: 分享


   <p>  不搞PHP开发的工作很长时间了,最近修改一个原来做的项目要支持调用Java类,开始重操PHP,先解决配置问题再说。不说太多费话。网上的</p><p>  文章不少,但是都有很多错误的东西在里面,下面我介绍一下我配置全过程与大家分享,如有问题可以虽时联系愿意为你解决。</p><p>  说明:此文章的正常性只对本文中所提供版本的PHP和JDK有保证,其它版本的未一一试,如有问题及时联系愿与你一起解决相关问题。</p><p>  安装配置PHP的工作这里就略过(有不会的朋友可以与我联系inber_net@hotmail.com)</p><p>  测试环境:Windows2003+IIS+PHP Version 4.3.6+JDK 1.4.1_01</p><p>  下面我先将网上的错误的配置列表罗列如下</p><p>  错误配置1</p><p>  java.home = D:j2sdk14101</p><p>  错误结果如下:</p><p>  can't open D:j2sdk14101lib  zmappings.</p><p>  解决办法:</p><p>  java.home = D:j2sdk14101jre</p><p>  错误配置2</p><p>  java.class.path ="C:PHPextensionsphp_java.jar;x:Java Class文件存目录</p><p>  错误结果如下:</p><p>  Fatal error: Call to a member function on a non-object in E:inberkongpublic_htmlphproot  estjava.php on line</p><p>  错误原因:用户Java class文件没有存放在 x:Java Class文件存目录 中或者x:Java Class文件存目录不存在</p><p>  解决办法:1 确定java.class.path ="C:PHPextensionsphp_java.jar;x:Java Class文件存目录 正确</p><p>  2 确定此目录下有在PHP调用的Class文件并确定是正确的</p><p>  正确的配置如下:</p><p>  第一步:确定环境正确</p><p>  默认以上环境配置正确</p><p>  PHP目录:C:PHP</p><p>  JDK目录:D:j2sdk14101</p><p>  第二步</p><p>  找到C:WINDOWS下的php.ini</p><p>  1 找到extension_dir并配置 确保其目录上有php_java.jar php_java.dll</p><p>  extension_dir = "D:PHPextensions"</p><p>  2 找到;extension=php_java.dll将此配置信息前的分号去掉</p><p>  extension=php_java.dll</p><p>  3 文件找到[java]之后的东西配置相关内容</p><code>[Java]<br />java.class.path ="C:PHPextensionsphp_java.jar;C:PHPphp_for_class"<br />java.home = D:j2sdk14101jre<br />java.library = D:j2sdk14101jreinserverjvm.dll<br />java.library.path = C:PHPextensions</code></p><p>  第三步</p><p>  写一个Java文件并编译后放在C:PHPphp_for_class</p><p>  Test.java文件如下:</p><code>package Test;<br />public class Test<br />{<br />public String getMessage(String dd)<br />{<br />return "<font color=green>Hello PHP ! I am from JAVA.</font>"+dd;<br />} <br />}</code><p>  写一个PHP文件testjava.php 调用Test包中的Test类</p><code><?php<br />$system = new Java("java.lang.System");<br />print "Java version=".$system->getProperty("java.version")." <br><br />";<br />print "Java vendor=".$system->getProperty("java.vendor")." <p><br />";<br />print "OS=".$system->getProperty("os.name")." ".<br />$system->getProperty("os.version")." on ".<br />$system->getProperty("os.arch")." <br><br />";<br />$formatter = new Java("java.text.SimpleDateFormat","EEEE,MMMM dd, yyyy 'at' h:mm:ss a zzzz");<br />print $formatter->format(new Java("java.util.Date"))."<br><BR><br />";<br />$b=new Java("Test.Test");<br />$x=$b->getMessage(" <br><font color=red>Hello Java! I am from PHP!</font>");<br />echo $x;<br />?></code><p>  显示结果:</p><p>  Java version=1.4.1_01</p><p>  Java vendor=Sun Microsystems Inc.</p><p>  OS=Windows XP 5.2 on x86</p><p>  星期四,一月 12, 2006 at 3:00:51 下午 中国标准时间</p><p>  Hello PHP ! I am from JAVA.</p><p>  Hello Java! I am from PHP!</p>