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

小晓夏 2014-08-29 09:54:35
调用代码:
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

麻烦大家帮我看下,不胜感激。
...全文
728 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
爱来不来 2014-10-16
  • 打赏
  • 举报
回复
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编码。没试过其它的编码,也没深入研究如何能用其它的编码。 希望能对你有用!
www_7di_net 2014-08-30
  • 打赏
  • 举报
回复
require_once("http://127.0.0.1:8080/JavaBridge/java/Java.inc"); 你要require外部文件,你需要首先修改一下php.ini的設定值,讓其允許require外部文件才行,我記得在php.ini里這個設定值默認是禁止的. 改完了設定之後重啟一下apache或nginx,然後測試一下看看外部文件能否require進來,這一點解決了之後再來處理java的問題不遲.
1.安装jdk-6u10-rc2-bin-b32-windows-i586-p-12_sep_2008.exe,一路next。 2.把下载的JavaBridge.jar直接用winrar打开,把这个jar包拷到 你的php目录的ext/下。 3.打开war包,里面有个java的文件夹,把他全部拷到你的项目下,如/demo/java 4.目前的版本是VMBridge了,要php调用java,要先启动JavaBridge,为了以后启动方便,我在ext/下新建了一个bat文件内容如下: @echo off start javaw -jar JavaBridge.jar 保存后,双击启动 会有一个提示框选择vmbridge port 默认8080,直接点ok就行了 5.在/demo/下新建test.php内容如下: php require_once ( "java/Java.inc" ); header( "content-type:text/html; charset=utf-8" ); // get instance of Java class java.lang.System in PHP $system = new Java( 'java.lang.System' ); $s = new Java( "java.lang.String" , "php-java-bridge config...

" ); echo $s ; // demonstrate property access print 'Java version=' . $system ->getProperty( 'java.version' ). '
' ; print 'Java vendor=' . $system ->getProperty( 'java.vendor' ). '
' ; print 'OS=' . $system ->getProperty( 'os.name' ). ' ' . $system ->getProperty( 'os.version' ). ' on ' . $system ->getProperty( 'os.arch' ). '
' ; // java.util.Date example $formatter = new Java( 'java.text.SimpleDateFormat' , "EEEE, MMMM dd, yyyy 'at' h:mm:ss a zzzz" ); print $formatter ->format( new Java( 'java.util.Date' )); ?> 6.启动apache,在浏览器中查看 http://localhost/demo/test.php 会看到如下信息: php-java-bridge config... Java version=1.6.0_10 Java vendor=Sun Microsystems Inc. OS=Windows Vista 6.0 on x86 星期日, 十一月 23, 2008 at 4:31:49 下午 中国标准时间 说明成功了,你可以在php调用java了。

20,359

社区成员

发帖
与我相关
我的任务
社区描述
“超文本预处理器”,是在服务器端执行的脚本语言,尤其适用于Web开发并可嵌入HTML中。PHP语法利用了C、Java和Perl,该语言的主要目标是允许web开发人员快速编写动态网页。
phpphpstorm 技术论坛(原bbs)
社区管理员
  • 开源资源社区
  • phpstory
  • xuzuning
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧