近来有几个客户说要我以前开发的一套B/S架构管理系统,由于年代久远,很多配置都有点忘了,出了一些错误。
系统部署完毕后,所有功能正常,唯独是报表出来,报如下错误:
java.lang.UnsatisfiedLinkError: no JInProcCommAdapter in java.library.path
系统用CrystalReportAS作为报表服务器的,由于报表服务器、数据服务器与应用服务器都放在一台机器上,所以在给报表服务器设置地址时,用了"localhost",以为没有问题,谁知上述的错误让我找了一天的资料也摸不着头脑,网上的资料几有两三条,并且都没有解决方案,并且好像都是俄文的,看不懂。
没办法,反编译了水晶报表的几个类,发现问题所在:
public ad a(String paramString)
throws ReportSDKException
{
Object localObject = null;
if (0 == paramString.compareToIgnoreCase("localhost"))
{
localObject = new ak();
((ad)localObject).connect(paramString);
}
else if (paramString.startsWith("IOR"))
{
localObject = new d();
((ad)localObject).connect(paramString);
}
else
{
localObject = new v();
((ad)localObject).connect(paramString);
}
((ad)localObject).a(this.a);
return (ad)localObject;
}
上面ak类会加载JInProcCommAdapter连接库,我找了N台电脑都没有此dll文件,灵机一动,将配置文件中的localhost尽管为127.0.0.1,文件解决。