php调用java 时无法找到自己写的java类

时间:2022-09-30 13:38:25
错误信息如下:

Fatal error: Uncaught [o(Exception):"java.lang.Exception: CreateInstance failed: new Test. Cause: java.lang.ClassNotFoundException: Could not find Test in java_require() path"] thrown in D:\Appserv\www\ns.yeahi.cn\test.php on line 2

代码如下:
$test = new Java("Test");
echo $test->printStr();

其中的Test是已经编译并放在了java.class.path目录下

我用的是Apache/2.0.55 , PHP/5.1.2 , php-java-bridge_3.0.8

php.ini的相关配置如下:
extension_dir="D:\Appserv\php\ext\"
extension=java-x86-windows.dll
[java]
java.home="C:\jdk\jre;C:\jdk\bin"
java.class.path="D:\Appserv\php\javaclass"
java.library.path="D:\Appserv\php\ext\"
java.library = "C:\jdk\jre\bin\server\jvm.dll"
java.log_level = 2

请问如何才能调用自己写的java类或是我的配置有什么问题吗?

18 个解决方案

#1


$test = new Java("/usr/java/j2sdk1.4.0_03/bin/Test");


按照我上面的修改一下看行不行
/usr/java/j2sdk1.4.0_03/bin/   bin的路径 你修改成你windwos下的路径  我的是LINUX下的

#2


to wy2000490(军) 
试过了,不行啊

#3


各位帮帮忙啊,我搞这个都搞了三天了,郁闷的

#4


自己UP

#5


我不清楚php的扩展调用java  在php.ini下面是不是配置好的
网站有很多教材 你可以看看检查一下你的的php.ini配置有没有问题

#6


谢谢wy2000490(军)答复,我觉得该配置的我都配置了,教材也看了不少,上面提到的需要注意的都也反复测试过了。我实在是找不出哪些配置了需要修改了。我把我的php.ini贴上了,帮我看一下吧。

#7


[PHP]
engine = On
zend.ze1_compatibility_mode = Off
short_open_tag = On
asp_tags = Off
precision    =  14
y2k_compliance = On
output_buffering = 4096
;output_handler =
zlib.output_compression = Off
;zlib.output_handler =
implicit_flush = Off
unserialize_callback_func=
serialize_precision = 100
allow_call_time_pass_reference = Off
safe_mode = Off
safe_mode_gid = Off
safe_mode_include_dir =
safe_mode_exec_dir =
safe_mode_allowed_env_vars = PHP_
safe_mode_protected_env_vars = LD_LIBRARY_PATH
;open_basedir =
disable_functions =
disable_classes =
expose_php = On

max_execution_time = 30     ; Maximum execution time of each script, in seconds
max_input_time = 60 ; Maximum amount of time each script may spend parsing request data
memory_limit = 8M      ; Maximum amount of memory a script may consume (8MB)


error_reporting  =  E_ALL & ~E_NOTICE & ~E_STRICT

display_errors = On

display_startup_errors = Off

log_errors = Off

log_errors_max_len = 1024

ignore_repeated_errors = Off

ignore_repeated_source = Off

report_memleaks = On

track_errors = Off

;html_errors = Off

;docref_root = "/phpmanual/"
;docref_ext = .html
  
;error_prepend_string = "<font color=ff0000>"

;error_append_string = "</font>"

;error_log = filename

;error_log = syslog


;arg_separator.output = "&amp;"

;arg_separator.input = ";&"

variables_order = "EGPCS"

register_globals = On

register_long_arrays = On

register_argc_argv = Off

post_max_size = 8M

gpc_order = "GPC"

magic_quotes_gpc = On

magic_quotes_runtime = Off    

magic_quotes_sybase = Off

auto_prepend_file =
auto_append_file =


default_mimetype = "text/html"
;default_charset = "iso-8859-1"
                            
;always_populate_raw_post_data = On



; UNIX: "/path1:/path2"  
;include_path = ".:/php/includes"
;
; Windows: "\path1;\path2"
;include_path = ".;c:\php\includes"

doc_root =

user_dir =

extension_dir ="d:\appserv\php\ext"

#8


enable_dl = On

cgi.force_redirect = 0

; cgi.redirect_status_env = ;

; cgi.fix_pathinfo=1

; fastcgi.impersonate = 1;

;cgi.rfc2616_headers = 0 

file_uploads = On

;upload_tmp_dir =

upload_max_filesize = 10M

allow_url_fopen = On

;from="john@doe.com"

;user_agent="PHP"

default_socket_timeout = 60

; auto_detect_line_endings = Off

;extension=php_bz2.dll
;extension=php_cpdf.dll
;extension=php_crack.dll
;extension=php_curl.dll
;extension=php_db.dll
;extension=php_dba.dll
;extension=php_dbase.dll
;extension=php_dbx.dll
;extension=php_domxml.dll
;extension=php_exif.dll
;extension=php_fdf.dll
;extension=php_filepro.dll
extension=php_gd2.dll
;extension=php_gettext.dll
;extension=php_hyperwave.dll
;extension=php_iconv.dll
;extension=php_ifx.dll
;extension=php_iisfunc.dll
;extension=php_imap.dll
;extension=php_interbase.dll
;extension=php_java.dll
extension=java-x86-windows.dll
;extension=php_ldap.dll
;extension=php_mbstring.dll
extension=php_mysql.dll
;extension=php_mcrypt.dll
;extension=php_mhash.dll
;extension=php_mime_magic.dll
extension=php_ming.dll
;extension=php_mssql.dll
;extension=php_msql.dll
;extension=php_oci8.dll
;extension=php_openssl.dll
;extension=php_oracle.dll
;extension=php_pdf.dll
;extension=php_pgsql.dll
;extension=php_printer.dll
;extension=php_shmop.dll
;extension=php_snmp.dll
extension=php_sockets.dll
;extension=php_sybase_ct.dll
;extension=php_w32api.dll
;extension=php_xmlrpc.dll
;extension=php_xslt.dll
;extension=php_yaz.dll
;extension=php_zip.dll


[Syslog]
; Whether or not to define the various syslog variables (e.g. $LOG_PID,
; $LOG_CRON, etc.).  Turning it off is a good idea performance-wise.  In
; runtime, you can define these variables by calling define_syslog_variables().
define_syslog_variables  = Off

[mail function]
; For Win32 only.
SMTP = localhost

; For Win32 only.
sendmail_from = me@localhost.com

; For Unix only.  You may supply arguments as well (default: "sendmail -t -i").
;sendmail_path =

[Java]
java.home="C:\jdk\jre;C:\jdk\bin"
java.class.path="D:\Appserv\php\javaclass"
java.library.path="D:\Appserv\php\ext\"
java.library = "C:\jdk\jre\bin\server\jvm.dll"
java.log_level = 2

;java.class.path = .\php_java.jar
;java.home = c:\jdk
;java.library = c:\jdk\jre\bin\hotspot\jvm.dll 
;java.library.path = .\

#9


;extension=php_java.dll

去掉前面的;

#10


然后重启一下apache

#11


javadll不启用就调用?

#12


谢谢关注,我的php_java.dll其实早就开过了,就是因为开了后Apache出错才用php-java-bridge的。

#13


打开了同样的问题

#14


up

#15


顶了……
小弟我初学,不知楼主有没有试过将apache-tomcat-5.5.16和PHP/5.1.2整合的?能否赐教?谢谢~~~````

#16


我也是同样的问题,
只是我是用的linux环境
apache2。05
php4.35
j2sdk1.4.2_05
很多站点都看过,很多资料都翻过,就是调用不了自己
实现的java类,明明类是放在了指定的目录,但是,却
找不到,我也很郁闷,这个问题困扰了我很久了。

跟我有相同环境的成功调用过的自己类的大虾能给我个提示吗?
或者给我一个配置文档
我的邮箱:cdyong1@sina.com
多谢了!!!!!!!!

#17


mark

#18


我已经解决这个问题了!
但是我是linux环境
httpd2.05
j2sdk1.4.2_05

但是window系统我就不知道了,你可以用一对双引号将你的类路径给引起来试试看
如:java.class.path=c:\fff\fff;c:\myclass
改成:
     java.class.path="c:\fff\fff;c:\myclass"
你可以试试看,我觉得这个说不一定就可以了

#1


$test = new Java("/usr/java/j2sdk1.4.0_03/bin/Test");


按照我上面的修改一下看行不行
/usr/java/j2sdk1.4.0_03/bin/   bin的路径 你修改成你windwos下的路径  我的是LINUX下的

#2


to wy2000490(军) 
试过了,不行啊

#3


各位帮帮忙啊,我搞这个都搞了三天了,郁闷的

#4


自己UP

#5


我不清楚php的扩展调用java  在php.ini下面是不是配置好的
网站有很多教材 你可以看看检查一下你的的php.ini配置有没有问题

#6


谢谢wy2000490(军)答复,我觉得该配置的我都配置了,教材也看了不少,上面提到的需要注意的都也反复测试过了。我实在是找不出哪些配置了需要修改了。我把我的php.ini贴上了,帮我看一下吧。

#7


[PHP]
engine = On
zend.ze1_compatibility_mode = Off
short_open_tag = On
asp_tags = Off
precision    =  14
y2k_compliance = On
output_buffering = 4096
;output_handler =
zlib.output_compression = Off
;zlib.output_handler =
implicit_flush = Off
unserialize_callback_func=
serialize_precision = 100
allow_call_time_pass_reference = Off
safe_mode = Off
safe_mode_gid = Off
safe_mode_include_dir =
safe_mode_exec_dir =
safe_mode_allowed_env_vars = PHP_
safe_mode_protected_env_vars = LD_LIBRARY_PATH
;open_basedir =
disable_functions =
disable_classes =
expose_php = On

max_execution_time = 30     ; Maximum execution time of each script, in seconds
max_input_time = 60 ; Maximum amount of time each script may spend parsing request data
memory_limit = 8M      ; Maximum amount of memory a script may consume (8MB)


error_reporting  =  E_ALL & ~E_NOTICE & ~E_STRICT

display_errors = On

display_startup_errors = Off

log_errors = Off

log_errors_max_len = 1024

ignore_repeated_errors = Off

ignore_repeated_source = Off

report_memleaks = On

track_errors = Off

;html_errors = Off

;docref_root = "/phpmanual/"
;docref_ext = .html
  
;error_prepend_string = "<font color=ff0000>"

;error_append_string = "</font>"

;error_log = filename

;error_log = syslog


;arg_separator.output = "&amp;"

;arg_separator.input = ";&"

variables_order = "EGPCS"

register_globals = On

register_long_arrays = On

register_argc_argv = Off

post_max_size = 8M

gpc_order = "GPC"

magic_quotes_gpc = On

magic_quotes_runtime = Off    

magic_quotes_sybase = Off

auto_prepend_file =
auto_append_file =


default_mimetype = "text/html"
;default_charset = "iso-8859-1"
                            
;always_populate_raw_post_data = On



; UNIX: "/path1:/path2"  
;include_path = ".:/php/includes"
;
; Windows: "\path1;\path2"
;include_path = ".;c:\php\includes"

doc_root =

user_dir =

extension_dir ="d:\appserv\php\ext"

#8


enable_dl = On

cgi.force_redirect = 0

; cgi.redirect_status_env = ;

; cgi.fix_pathinfo=1

; fastcgi.impersonate = 1;

;cgi.rfc2616_headers = 0 

file_uploads = On

;upload_tmp_dir =

upload_max_filesize = 10M

allow_url_fopen = On

;from="john@doe.com"

;user_agent="PHP"

default_socket_timeout = 60

; auto_detect_line_endings = Off

;extension=php_bz2.dll
;extension=php_cpdf.dll
;extension=php_crack.dll
;extension=php_curl.dll
;extension=php_db.dll
;extension=php_dba.dll
;extension=php_dbase.dll
;extension=php_dbx.dll
;extension=php_domxml.dll
;extension=php_exif.dll
;extension=php_fdf.dll
;extension=php_filepro.dll
extension=php_gd2.dll
;extension=php_gettext.dll
;extension=php_hyperwave.dll
;extension=php_iconv.dll
;extension=php_ifx.dll
;extension=php_iisfunc.dll
;extension=php_imap.dll
;extension=php_interbase.dll
;extension=php_java.dll
extension=java-x86-windows.dll
;extension=php_ldap.dll
;extension=php_mbstring.dll
extension=php_mysql.dll
;extension=php_mcrypt.dll
;extension=php_mhash.dll
;extension=php_mime_magic.dll
extension=php_ming.dll
;extension=php_mssql.dll
;extension=php_msql.dll
;extension=php_oci8.dll
;extension=php_openssl.dll
;extension=php_oracle.dll
;extension=php_pdf.dll
;extension=php_pgsql.dll
;extension=php_printer.dll
;extension=php_shmop.dll
;extension=php_snmp.dll
extension=php_sockets.dll
;extension=php_sybase_ct.dll
;extension=php_w32api.dll
;extension=php_xmlrpc.dll
;extension=php_xslt.dll
;extension=php_yaz.dll
;extension=php_zip.dll


[Syslog]
; Whether or not to define the various syslog variables (e.g. $LOG_PID,
; $LOG_CRON, etc.).  Turning it off is a good idea performance-wise.  In
; runtime, you can define these variables by calling define_syslog_variables().
define_syslog_variables  = Off

[mail function]
; For Win32 only.
SMTP = localhost

; For Win32 only.
sendmail_from = me@localhost.com

; For Unix only.  You may supply arguments as well (default: "sendmail -t -i").
;sendmail_path =

[Java]
java.home="C:\jdk\jre;C:\jdk\bin"
java.class.path="D:\Appserv\php\javaclass"
java.library.path="D:\Appserv\php\ext\"
java.library = "C:\jdk\jre\bin\server\jvm.dll"
java.log_level = 2

;java.class.path = .\php_java.jar
;java.home = c:\jdk
;java.library = c:\jdk\jre\bin\hotspot\jvm.dll 
;java.library.path = .\

#9


;extension=php_java.dll

去掉前面的;

#10


然后重启一下apache

#11


javadll不启用就调用?

#12


谢谢关注,我的php_java.dll其实早就开过了,就是因为开了后Apache出错才用php-java-bridge的。

#13


打开了同样的问题

#14


up

#15


顶了……
小弟我初学,不知楼主有没有试过将apache-tomcat-5.5.16和PHP/5.1.2整合的?能否赐教?谢谢~~~````

#16


我也是同样的问题,
只是我是用的linux环境
apache2。05
php4.35
j2sdk1.4.2_05
很多站点都看过,很多资料都翻过,就是调用不了自己
实现的java类,明明类是放在了指定的目录,但是,却
找不到,我也很郁闷,这个问题困扰了我很久了。

跟我有相同环境的成功调用过的自己类的大虾能给我个提示吗?
或者给我一个配置文档
我的邮箱:cdyong1@sina.com
多谢了!!!!!!!!

#17


mark

#18


我已经解决这个问题了!
但是我是linux环境
httpd2.05
j2sdk1.4.2_05

但是window系统我就不知道了,你可以用一对双引号将你的类路径给引起来试试看
如:java.class.path=c:\fff\fff;c:\myclass
改成:
     java.class.path="c:\fff\fff;c:\myclass"
你可以试试看,我觉得这个说不一定就可以了