php通过php-java-bridge调用java类 出现的问题。

时间:2022-09-30 13:18:53
调用代码:
require_once("http://127.0.0.1:8080/JavaBridge/java/Java.inc");
$client=new java("server.huateng.po.SignatureVerification");
//$client=new java("server.huateng.po.HexUtils");
调用 注释的那个类(这个类和上面的那个类在同一路径)是没问题的。

错误:
Fatal error: Uncaught [[o:Exception]:"java.lang.Exception: CreateInstance failed: new server.huateng.po.SignatureVerification. Cause: java.lang.ClassNotFoundException: Unresolved external reference: java.lang.NoClassDefFoundError: Could not initialize class server.huateng.po.SignatureVerification. -- Unable to call constructor, see the README section "Java platform issues" for details and DO NOT REPORT THIS PROBLEM TO THE PHP/Java Bridge MAILING LIST! VM: 1.7.0_65@http://java.oracle.com/" at: #-24 php.java.bridge.JavaBridge.getUnresolvedExternalReferenceException(JavaBridge.java:422) #-23 php.java.bridge.JavaBridge.CreateObject(JavaBridge.java:498) #-22 php.java.bridge.Request.handleRequest(Request.java:458) #-21 php.java.bridge.Request.handleOneRequest(Request.java:510) #-20 php.java.servlet.PhpJavaServlet.handleLocalConnection(PhpJavaServlet.java:202) #-19 php.java.servlet.PhpJavaServlet.handlePut(PhpJavaServlet.java:250) #-18 php.java.servlet.PhpJavaServlet.doPut(PhpJavaServlet.java:261) #-17 javax.servlet.http.HttpSer in http://127.0.0.1:8080/JavaBridge/java/Java.inc on line 195

研究了一天了,毫无进展
下面这些是SignatureVerification.class 调用的类
import com.sheca.safeengine.javasafeengine;
import java.io.FileInputStream;
import java.io.UnsupportedEncodingException;
import java.security.KeyStore;
import java.security.PrivateKey;
import java.util.Enumeration;
import java.util.ResourceBundle;

就发现调用 java.util.ResourceBundle;(最后行)
require_once("http://127.0.0.1:8080/JavaBridge/java/Java.inc");
$client=new java("java.util.ResourceBundle");
会出现点问题
Warning: Unchecked exception detected: [[o:Response$UndeclaredThrowableErrorMarker]:"FATAL: Undeclared java.lang.RuntimeException detected. java.lang.Exception: CreateInstance failed: new java.util.ResourceBundle. Cause: java.lang.InstantiationException VM: 1.7.0_65@http://java.oracle.com/" at: #-25 sun.reflect.InstantiationExceptionConstructorAccessorImpl.newInstance(InstantiationExceptionConstructorAccessorImpl.java:48) #-24 java.lang.reflect.Constructor.newInstance(Constructor.java:526) #-23 php.java.bridg[...]lse) #1 http://127.0.0.1:8080/JavaBridge/java/Java.inc(360): java_Arg->getResult(false) #2 http://127.0.0.1:8080/JavaBridge/java/Java.inc(363): java_Client->getWrappedResult(false) #3 http://127.0.0.1:8080/JavaBridge/java/Java.inc(535): java_Client->getInternalResult() #4 http://127.0.0.1:8080/JavaBridge/java/Java.inc(1929): java_Client->createObject('java.util.Resou...', Array) #5 /home/dev/public_html/tcake.cn/fftpay.php(47): Java->Java('java.util.Resou...') #6 {main}] in http://127.0.0.1:8080/JavaBridge/java/Java.inc on line 202
122
Fatal error: An unchecked exception occured during script execution. Please check the server log files for details. in http://127.0.0.1:8080/JavaBridge/java/Java.inc on line 776

麻烦大家帮我看下,不胜感激。

2 个解决方案

#1


require_once("http://127.0.0.1:8080/JavaBridge/java/Java.inc");
你要require外部文件,你需要首先修改一下php.ini的設定值,讓其允許require外部文件才行,我記得在php.ini里這個設定值默認是禁止的.
改完了設定之後重啟一下apache或nginx,然後測試一下看看外部文件能否require進來,這一點解決了之後再來處理java的問題不遲.

#2


require_once("java/Java.inc"); //php调用java的接口,路径问题需要注意
$here=realpath(dirname($_SERVER["SCRIPT_FILENAME"]));
java_set_library_path($here.PATH_SEPARATOR .'.'); //设置java开发包(class或jar文件)路径,多个路径就用PATH_SEPARATOR分隔,保证跨平的支持。
java_set_file_encoding("GBK");      //设置JAVA编码。没试过其它的编码,也没深入研究如何能用其它的编码。


希望能对你有用!

#1


require_once("http://127.0.0.1:8080/JavaBridge/java/Java.inc");
你要require外部文件,你需要首先修改一下php.ini的設定值,讓其允許require外部文件才行,我記得在php.ini里這個設定值默認是禁止的.
改完了設定之後重啟一下apache或nginx,然後測試一下看看外部文件能否require進來,這一點解決了之後再來處理java的問題不遲.

#2


require_once("java/Java.inc"); //php调用java的接口,路径问题需要注意
$here=realpath(dirname($_SERVER["SCRIPT_FILENAME"]));
java_set_library_path($here.PATH_SEPARATOR .'.'); //设置java开发包(class或jar文件)路径,多个路径就用PATH_SEPARATOR分隔,保证跨平的支持。
java_set_file_encoding("GBK");      //设置JAVA编码。没试过其它的编码,也没深入研究如何能用其它的编码。


希望能对你有用!