weblogic下的web项目报错:Could not initialize class com.jacob.com.ComThread 10
最近也在做这块,同样也遇到这个问题,具体解决方案如下:
语言:Java 业务需求:excel转化为pdf. jar包:jacob-jdk15-1.18.jar 系统:windows 64位
具体代码是从网上摘抄的,想知道原理的自己可以研究jacob,代码示例:
ActiveXComponent ax = null;
Dispatch excel = null;
try {
ComThread.InitSTA();
ax = new ActiveXComponent("Excel.Application");
ax.setProperty("Visible", new Variant(false));
ax.setProperty("AutomationSecurity", new Variant(3)); // 禁用宏
Dispatch excels = ax.getProperty("Workbooks").toDispatch();
Object[] obj = new Object[]{
E:\TEST.excel(待转换文件路径),
new Variant(false),
new Variant(false)
};
excel = Dispatch.invoke(excels, "Open", Dispatch.Method, obj, new int[9]).toDispatch();
// 转换格式
Object[] obj2 = new Object[]{
new Variant(0), // PDF格式=0
E:\TEST.pdf(转换后文件路径),
new Variant(0) //0=标准 (生成的PDF图片不会变模糊) ; 1=最小文件
};
Dispatch.invoke(excel, "ExportAsFixedFormat", Dispatch.Method,obj2, new int[1]);
}catch (Exception e) {
e.printStackTrace();
}finally{
if (excel != null) {
Dispatch.call(excel, "Close", new Variant(false));
}
if (ax != null) {
ax.invoke("Quit", new Variant[] {});
ax = null;
}
ComThread.Release();
}
首先我是通过写main函数来测试的
将jacob-1.18-x64.dll 放在jdk1.8.0_131\bin(具体看Java环境)下.
jacob-1.18-x64.dll是与jacob-jdk15-1.18.jar配套使用的.
将jacob-1.18-x64.dll 放在C:\Windows\System32下.
这样完全可以运行成功了,但是如果在Java web环境中运行,会报Could not initialize class com.jacob.com.ComThread.
因此我们需要将jacob-1.18-x64.dll放入apache-tomcat-8.5.13\bin(具体看你tomcat)
这样就错误也解决了.
顺便提供我用的jar包以及dll
jacob-1.18.zip
这是我回答跟你报一样错误的问题答案,我看到你用的是weblogic,同样你可以试一下jacob-1.18-x64.dll放在weblogic下的bin,希望能帮你解决问题.
2014-04-11
广告 您可能关注的内容 |