项目场景:
简述项目相关背景:需要调用dll将FastReport的frx文件读取后转为SafeArray,最后返回PDF流文件给前端
需要的依赖:
jacob.jar版本1.20
jdk版本1.8
jacob.dll版本 jacob-1.20-x64.dll
fastReport相关dll若干
使用步骤:1.将jacob的dll放在项目使用的jdk的bin目录下,将环境变量path中的jdk的目录优先级调到最高 2.java项目引入jacob的依赖 3注册你需要调用的dll
相关问题
报错:Can’t co-create object
System.out.println(System.getProperty("java.library.path"));
ActiveXComponent dotnetCom1 = new ActiveXComponent("XXXX.ReportLibrary.FastReportHelper");
原因分析:
测试jacob是否正常, 发现正常
System.out.println(System.getProperty("java.library.path"));
ActiveXComponent xl = new ActiveXComponent("Excel.Application");
Dispatch xlo = (Dispatch)(xl.getObject());
try {
System.out.println("version="+xl.getProperty("Version"));
System.out.println("version="+Dispatch.get(xlo,"Version"));
} catch (Exception e) {
e.printStackTrace();
} finally {
xl.invoke("Quit", new Variant[]{});
}
检查fastReport的dll注册是否成功 发现正常
C:\Windows\Microsoft.NET\Framework\v4.0.30319\regasm /codebase "%~dp0\XXXX.ReportLibrary.dll"
管理员运行cmd ,使用regasm /u命令 取消注册 ,发现使用绝对路径注册后正常
实现如下效果