java写dll报错_java解析dll文件报错

目前的项目中需要将Excel内容显示在页面上,尝试了各种方法。 发下下面一种比较适合。 1.运行环境为win平台,不牵扯可移植 2.文档内容简单 3.简单显示 下面是一段代码

import java.io.File;

import org.jawin.DispatchPtr;

import org.jawin.win32.Ole32;

/**

* 将xls文件读出后并转换成xml文件

* @author Jeff

* @version v1.0

*/

public class ExcelUtil {

/**

*

* @param src 源文件xls文件

* @param dest 导出文件xml文件

*/

public static void saveXlsAsXml(String src, String dest) {

try {

Ole32.CoInitialize();

File file = new File(dest);

if (file.exists()) {

file.delete();

}

DispatchPtr app = new DispatchPtr ("Excel.Application");

app.put("Visible", false);

DispatchPtr books=(DispatchPtr)app.get("Workbooks");

DispatchPtr book = (DispatchPtr) books.invoke("Open", src);

/**

* for the benefit of others, here is the complete list of canstant values for the saveas function :

18=Excel

6=Comma-seperated values format

22=Macintosh comma-separated values format

24=MSDOS comma-seperated values format

23=MS windows comma-separated values format

-4158=O/S boing used comma-separated values format

7=DBase II format

8=DBase III format

11=DBase IV format

9=Data interchange format

16=Excel 2.0 format

27=Excel 2.0 (Far East) format

29=Excel 3.0 format

33=Excel 4.0 format

35=Excel 4.0 Workbook format

39=Excel 5.0 & Excel 97 format

43=Excel 95 & Excel 97 format

44=HTML

26=Excel international add-in

25=Excel international marco

2=symbolic link format

17=template file format

19=Mcintosh test file format

21=MSDOS test file format

36=text printer file (.prn)

20=MS Windows text file format

42=Unicode

45=Web archive format (.mht)

5=Lotus 2.x format

31==Lotus 2.x .all format

30=Lotus 2.x .fmt format

15=Lotus 3.x format

32=Lotus3.x and Lotus 123 for Windows format

38=Lotus 4.0 format

4=MS Works format

-4143=Excel workbook format

28=MS Works (far east) format

34=Quattro Pro for MSDOS format

46=XML format

*/

book.invoke("SaveAs",dest,new Integer(46));

book.invoke("Quit");

} catch (Exception e) {

}

}

}

问题出来了,单元测试时报了这个异常: java.lang.UnsatisfiedLinkError: win32Invoke0 at org.jawin.marshal.GenericStub.win32Invoke0(Native Method) at org.jawin.marshal.GenericStub.win32Invoke(GenericStub.java:152) at org.jawin.FuncPtr.invoke(FuncPtr.java:186) at org.jawin.FuncPtr.invoke(FuncPtr.java:205) at org.jawin.win32.Ole32.CLSIDFromProgID(Ole32.java:115) at org.jawin.win32.Ole32.GetFromProgID(Ole32.java:95) at org.jawin.COMPtr.(COMPtr.java:126) at org.jawin.DispatchPtr.(DispatchPtr.java:72) at com.intelsrc.util.ExcelUtil.saveXlsAsXml(ExcelUtil.java:26) at com.intelsrc.test.TestExcelOperate.testExportToExcel(TestExcelOperate.java:27) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:592) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20) at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28) at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:73) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:46) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:180) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:41) at org.junit.runners.ParentRunner$1.evaluate(ParentRunner.java:173) at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28) at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31) at org.junit.runners.ParentRunner.run(ParentRunner.java:220) at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:46) at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)

我使用的是jawin来解析xls文档。 所以按照正常步骤 1.拷贝jawin.dll到system32目录下 2.将jawin-stubs.jar和jawin.jar包导入到jre/lib/ext目录下 3.执行 大家看看 是哪里有问题?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值