eclipse3.6 中jawin调用dll抛出ComException

钟小华 发布于 2010/12/18 02:57
阅读 1K+
收藏 1
目前正在开发的一个项目,需要在java代码中调用windows服务,在群里讨论时有人提出java可以调用win api。google下,基本上用到的有3种:jni、jinvoke、jawin
  1. jni据说要写c代码,考虑到c基本上还给老师了,而且配置也比较复杂,不得已放弃了。
  2. jinvoke 30天试用 试用完毕收费2000美刀   无钱(使用倒是很简单,download包后,直接打开demo,里面N十个示例)
  3. jawin 免费开源  据说还不错

确定下使用jawin后,到http://jawinproject.sourceforge.net/下了最新的包。新建项目、导入包和demo后,用里面创建office的类试了试手感,不错,兴奋.....

接下来为项目做准备,试试调用dll  结果就悲剧了 抛出异常如下:

org.jawin.COMException: 0: ??×÷????ê
 at org.jawin.marshal.SharedStubs.invokeIGGI_I(Native Method)
 at org.jawin.FuncPtr.invoke_I(FuncPtr.java:303)
 at demos.HelloDll.main(HelloDll.java:30)
Exception in thread "main" org.jawin.COMException: 0: ??×÷????ê
 at org.jawin.marshal.SharedStubs.invokeIGGI_I(Native Method)
 at org.jawin.FuncPtr.invoke_I(FuncPtr.java:303)
 at demos.HelloDll.main(HelloDll.java:30)

开发环境及工具:
   xp、myeclipse9.0、jdk1.6.0_22
首先怀疑是自己jawin.dll文件copy问题,经确认不是;然后又怀疑是jawin包导入问题,结果也不是;难道是myeclipse问题..,接着在eclipse 3.6下试试,红旗依旧;接下来只好怀疑是jdk bug了(jdk有很多前科),依次尝试了jdk6 u20到最新的u23,青山不倒啊;下班休息。晚上用另外一台电脑继续试了下(myeclipse 6.5,jdk1.6.0_u21),居然ok。看来只好怀疑是盗版xp问题了 ,安装的东西太多,不舍得重装系统,犹豫一下午。继续下班。怒了,只好整整那台好的,看看他为什么行,jdk版本轮番上阵,很坚强很持久。考虑下myeclipse6.5版本有点老,所以同时下了个myeclipse9.0和eclipse3.6(没找到4的下载链接...),结果很挫,乱码异常一个不少的出现了。
经过两天在不同的机器上使用jdk6.0_u20、6.0._u21、6.0_u22、6.0_u23版本
eclipse3.3、 eclipse 3.6版本
测试:eclipse3.6及以eclipse3.6为内核的myeclipse9.0 使用jawin调用dll时抛出ComException 并出现乱码
加载中
0
G
GuKaKa

同病相连~有什么解决办法不?

0
ddatsh
ddatsh

我没明白怎么个调用 WINDOWS的服务?

是启动WIN 服务?

是的话

Runtime.getRuntime().exec("xx.bat")

bat里net start

0
ddatsh
ddatsh

我搜了下jawin 明白了

是要调用 DLL中的东东嘛

jnative 就很简单

是不是还有个也很简单的另外一个我忘了

 

以前JAVA 调用过某POS机提供的DLL中的东东

刷了几次卡玩

0
钟小华
钟小华

这两个星期回家没有上网,关于这个问题只有在eclipse3.6中存在,你换个其他版本试试

0
锋哥哥
锋哥哥
他就是一头驴!
返回顶部
顶部