急!!php使用JavaBridge调用java方法问题

zheliai1989 2011-08-17 06:05:47
使用JavaBridge调用java,php可以调用java的方法了,但是我调用第三方包之后就报错,下面是错误信息。

Fatal error: Uncaught [[o:Exception]:"java.lang.Exception: Invoke failed: [[o:Signature]]->sign((o:String)[o:String], (o:String)[o:String], (o:String)[o:String]). Cause: java.lang.NullPointerException VM: 1.6.0_26@http://java.sun.com/" at: #-10 java.lang.String.<init>(Unknown Source) #-9 com.icbc.b2c.Signature.sign(Signature.java:42) #-8 sun.reflect.GeneratedMethodAccessor24.invoke(Unknown Source) #-7 sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) #-6 java.lang.reflect.Method.invoke(Unknown Source) #-5 php.java.bridge.JavaBridge.Invoke(JavaBridge.java:1044) #-4 php.java.bridge.Request.handleRequest(Request.java:417) #-3 php.java.bridge.Request.handleRequests(Request.java:500) #-2 php.java.bridge.http.ContextRunner.run(ContextRunner.java:145) #-1 php.java.bridge.ThreadPool$Delegate.run(ThreadPool.java:60) #0 http://localhost:8080/JavaBridge/java/Java.inc(232): java_ThrowExceptionProxyFactory->getProxy(2, 'com.icbc.b2c.Si...', 'T', true) #1 http://localhost:8080/JavaBridge/java/Java.inc(360): java_Arg->getR in http://localhost:8080/JavaBridge/java/Java.inc on line 195

下面是我的java包代码:
package com.icbc.b2c;

/**
* @author YaoDeZhi
*
*/
import cn.com.infosec.icbc.ReturnValue;

import java.io.*;
import java.lang.*;

public class Signature
{
private static ReturnValue rv = new ReturnValue();
/*
static{
Security.addProvider(new InfosecProvider());
}*/

/**
* Constructor for Signature.
*/
public Signature()
{
super();
}

public static String sign(String srcStr, String keyPath, String privatePasswd) throws Exception{

FileInputStream fileKey=null;
try{

byte[] byteSrc = srcStr.getBytes();
fileKey = new FileInputStream(keyPath);
//byte[] PriK = new byte[fileKey.available()-2];
//fileKey.skip(2);
byte[] PriK = new byte[fileKey.available()];
fileKey.read(PriK);
fileKey.close();
char[] keyPass = privatePasswd.toCharArray();
byte[] sign = rv.sign(byteSrc,byteSrc.length,PriK,keyPass);
byte[] tmpSign = rv.base64enc(sign);
return new String(tmpSign);
}catch(IOException ex){
if(fileKey!=null)
fileKey.close();
throw ex;
}

}

php代码:
require_once("http://localhost:8080/JavaBridge/java/Java.inc");

$a = new Java("com.icbc.b2c.Signature");

$b=$a->sign("APIName=B2B&APIVersion=001.001.001.001&Shop_code=0200EC10000019&MerchantURL=http://trans2.315.com.cn/account/Validate&Serial_no=HFK208&PayStatusZHCN=0&TranErrorCode=0&TranErrorMsg=&ContractNo=1135663779296&ContractAmt=200&Account_cur=001&JoinFlag=2&ShopJoinFlag=&CustJoinFlag=&CustJoinNumber=&SendType=0&TranTime=20060530140939¬ifyTime=20060530141210&Shop_acc_num=0200002919006550496&PayeeAcct=0200002919006550496&PayeeName=北京网信在线电子商务&ShopRem=商城备注","e:\\user.key","11111111");

另外银行给的cn.com.infosec.icbc.ReturnValue包的代码:

我做的是银行的接口,api没有php版的,我是用JavaBridge实现php调用java的方法,java不是很懂,大师来帮下我哦。
...全文
468 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
gll2344 2013-06-15
  • 打赏
  • 举报
回复
我现在也遇到这样的问题了,有什么解决办法吗?万分感谢啊
  • 打赏
  • 举报
回复
人呢 我也遇到了
f_mei520 2012-03-09
  • 打赏
  • 举报
回复
想请教一下是怎么解决的。谢谢!
f_mei520 2012-03-09
  • 打赏
  • 举报
回复
楼主问题解决了吗?
karorokiki 2011-08-22
  • 打赏
  • 举报
回复
com.icbc.b2c.Signature这个有没有放对目录的

http://www.cnblogs.com/skywter/archive/2010/08/08/1795347.html
LMAOhuaNL 2011-08-17
  • 打赏
  • 举报
回复
够专业,顶!

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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