PHP4调用JavaBean的摸索作者:东方一蛇 | 收录日期 : 2000-08-21 首先声明,写此文时,我对这个也不懂,只是自己从php.net上下了例子,试着做了一下,而且是在 win2000+apache+php4p12配置下. 具体步骤如下: 一、安装好JVM(java virtual machine)(我用的是jdk122) 当然,您不一定要用jdk122,甚至不用jdk,用其它的,比如: JVM=Kaffe 1.0.4 (as delivered with OS), OS=Redhat Linux 6.1 JVM=Kaffe 1.0.5 (built from source), OS=Redhat Linux 6.1 JVM=IBM 1.1.8, OS=Redhat Linux 6.1 JVM=Blackdown 1.2.2 RC4, OS=Redhat Linux 6.1 JVM=Sun JDK 1.1.8, OS=Windows NT 4/win2000 但是,在这里我只讲我的做法,其它的我没有试过,不要问我,这里要特别注意的是, 根据php官方站点的说明,竟然不支持jdk122+linux 二、设置环境变量 在win2000中"我的电脑"->"属性"->"高级"->"环境变量" 设置JAVA_HOME 为:jdk路径,比如我的jdk122装在e:\jsp\jdk122下,那么就设置为e:\jsp\jdk122 三、下载相关文件(如果您没有的话) 下载地址:http://www.php.net/downloads.php 我下载了:php-4.0.1-Win32-java-jdk122.zip文件,解压后有几个例子,并且有:php_java.dll和php_java.jar文件. 四、配置php.ini文件 [java] java.class.path=E:\PHP4\php_java.jar java.home=E:\jsp\jdk122\bin extension=php_java.dll java.library.path=E:\PHP4\ext\ java.library=E:\Program Files\JavaSoft\JRE\1.2\bin\classic\jvm.dll 以上是我的配置,说明一下,我的php4在e:\php4目录下,我的所有扩充的dll文件 放在e:\php4\ext目录下,当然php_java.dll也就应该copy到这个目录了.最后确认你的 win2000下有jvm.dll文件,如果没有,安装一下visual studio就可以了(我用装了个VC++6,所以不用考虑了) 五、测试 运行phpinfo()就可以看到有"java"了,如果没有,说明你没有成功.它的显示如下: java Directive Local Value Master Value java.class.path E:\PHP4\php_java.jar E:\PHP4\php_java.jar java.home E:\jsp\jdk122\bin E:\jsp\jdk122\bin java.library E:\Program Files\JavaSoft\JRE\1.2\bin\classic\jvm.dll jvm.dll java.library.path E:\PHP4\ext\ no value 六、测试例子 我用的是下载的文件中包含的例子:jver.php,如果成功,将有如下结果: Java version=1.2.2 Java vendor=Sun Microsystems Inc. OS=Windows NT 5.0 on x86 星期三, 七月 19, 2000 at 10:32:53 下午 GMT+08:00
没有成功。 好象提示 Warning: java.lang.ClassNotFoundException: tests.test1 in c:\PHP\class\hi.php on line 2Fatal error: Call to a member function on a non-object in c:\PHP\class\hi.php on line 4当然,我已经将c:\php加在环境PATH的CLASS路径中了。
我调用成功BEAN里的函数成功了。 可是为何在PHP里不能给变量赋新值? tests.java package tests; public class test1 { public int a=1; public String getMessage() { return "Hello "+a; } } 查看的JSP文件 <? $b=new Java("tests.test1"); $b->a=2; //就是上面不能赋值。 //系统提示在此文件的第4行,也就是$b->a=2这句错误:Fatal error: Attempt to access a Java property on a non-Java object $x=$b->getMessage(); echo $x; ?> 当然如果去掉那一句还是正常的。
tests.java package tests; public class test1 { public int a=1; } <? $b=new Java("tests.test1"); $b->a=2; ?> 如果这样,有问题吗?
关注! 我发现不能赋值给属性,不过可以使用JAVA类中的方法。 怎么回事?
tests.java package tests; public class test1 { public int ret_a(int a) { return a; } } <? $b=new Java("tests.test1"); $x=$b->ret_a(2); echo $x; ?>24680,请这样试试看 成功与否都请回复我的家:[http://www.wodejia.net/]
谢谢一蛇兄,我调用其方法和给方法里的参数赋值都是可以的。 可如果加上public int a=1;或public int a;总不能给a赋值。
JVM=Kaffe 1.0.4 (as delivered with OS), OS=Redhat Linux 6.1
JVM=Kaffe 1.0.5 (built from source), OS=Redhat Linux 6.1
JVM=IBM 1.1.8, OS=Redhat Linux 6.1
JVM=Blackdown 1.2.2 RC4, OS=Redhat Linux 6.1
JVM=Sun JDK 1.1.8, OS=Windows NT 4/win2000
但是,在这里我只讲我的做法,其它的我没有试过,不要问我,这里要特别注意的是, 根据php官方站点的说明,竟然不支持jdk122+linux
二、设置环境变量 在win2000中"我的电脑"->"属性"->"高级"->"环境变量"
设置JAVA_HOME
为:jdk路径,比如我的jdk122装在e:\jsp\jdk122下,那么就设置为e:\jsp\jdk122 三、下载相关文件(如果您没有的话) 下载地址:http://www.php.net/downloads.php
我下载了:php-4.0.1-Win32-java-jdk122.zip文件,解压后有几个例子,并且有:php_java.dll和php_java.jar文件.
四、配置php.ini文件 [java]
java.class.path=E:\PHP4\php_java.jar
java.home=E:\jsp\jdk122\bin
extension=php_java.dll
java.library.path=E:\PHP4\ext\
java.library=E:\Program Files\JavaSoft\JRE\1.2\bin\classic\jvm.dll
以上是我的配置,说明一下,我的php4在e:\php4目录下,我的所有扩充的dll文件 放在e:\php4\ext目录下,当然php_java.dll也就应该copy到这个目录了.最后确认你的 win2000下有jvm.dll文件,如果没有,安装一下visual studio就可以了(我用装了个VC++6,所以不用考虑了)
五、测试 运行phpinfo()就可以看到有"java"了,如果没有,说明你没有成功.它的显示如下: java
Directive Local Value Master Value
java.class.path
E:\PHP4\php_java.jar E:\PHP4\php_java.jar
java.home
E:\jsp\jdk122\bin E:\jsp\jdk122\bin
java.library
E:\Program Files\JavaSoft\JRE\1.2\bin\classic\jvm.dll jvm.dll
java.library.path
E:\PHP4\ext\ no value
六、测试例子 我用的是下载的文件中包含的例子:jver.php,如果成功,将有如下结果:
Java version=1.2.2
Java vendor=Sun Microsystems Inc.
OS=Windows NT 5.0 on x86
星期三, 七月 19, 2000 at 10:32:53 下午 GMT+08:00
好象提示
Warning: java.lang.ClassNotFoundException: tests.test1 in c:\PHP\class\hi.php on line 2Fatal error: Call to a member function on a non-object in c:\PHP\class\hi.php on line 4当然,我已经将c:\php加在环境PATH的CLASS路径中了。
你的php.ini配置好了吗?打个小广告:我的家"http://www.wodedjia.net"
上有两个关于php调用javabean的文章有什么问题,也许我可以帮你
[email protected]
可是为何在PHP里不能给变量赋新值?
tests.java
package tests;
public class test1
{
public int a=1;
public String getMessage()
{
return "Hello "+a;
} } 查看的JSP文件
<?
$b=new Java("tests.test1"); $b->a=2;
//就是上面不能赋值。
//系统提示在此文件的第4行,也就是$b->a=2这句错误:Fatal error: Attempt to access a Java property on a non-Java object $x=$b->getMessage(); echo $x;
?>
当然如果去掉那一句还是正常的。
package tests;
public class test1
{
public int a=1;
} <?
$b=new Java("tests.test1");
$b->a=2;
?>
如果这样,有问题吗?
我发现不能赋值给属性,不过可以使用JAVA类中的方法。
怎么回事?
package tests;
public class test1
{
public int ret_a(int a)
{
return a;
}
}
<?
$b=new Java("tests.test1");
$x=$b->ret_a(2);
echo $x;
?>24680,请这样试试看
成功与否都请回复我的家:[http://www.wodejia.net/]
可如果加上public int a=1;或public int a;总不能给a赋值。
谢谢,加分。