1

我需要创建一个可以加载 com 方法的 Applet,为此我使用了 java com bridge (jacob) 处理 com dll,我的环境设置如下:

  • 操作系统:win7x64
  • IDE:Eclipse32位版本
  • COM DLL:BPIKeyCOM.dll 32 位版本
  • com网桥:jacob1.17-32bit版本
  • 服务器:Tomcatv7.0

我将 jacob.dll 放在 C:\Windows\System32 下,将 jacob.jar 放在 WEB-INF\lib 下

当我运行该项目时,它在 Eclipse 中运行良好。但是在web上部署时,出现如下错误信息:

java.lang.NoClassDefFoundError: com/jacob/activeX/ActiveXComponent
at Fmain.Ikeycheck(Fmain.java:180)
at Fmain.init(Fmain.java:73)
at sun.applet.AppletPanel.run(AppletPanel.java:435)
at java.lang.Thread.run(Thread.java:724)

Caused by:
java.lang.ClassNotFoundException: com.jacob.activeX.ActiveXComponent
at sun.applet.AppletClassLoader.findClass(AppletClassLoader.java:219)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.applet.AppletClassLoader.loadClass(AppletClassLoader.java:152)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)...

看起来这条消息正在谈论它找不到com/jacob/activeX/ActiveXComponent.class,但我不明白如何。

我已经搜索了很多解决方案并试图解决它,但它仍然一直显示这个错误消息,我用来做 sigh jar,确保类路径正确,甚至尝试更改策略文件......等等。但是,它仍然不起作用!

4

2 回答 2

1

您已将 dll 和 jacob.jar 安装到 Java Web 容器中;不幸的是,这不是用户的网络浏览器(例如 Applet Container)。您需要将 dll 和 jacob.jar 文件添加到 applet jar 中。您可能还应该阅读内容。还需要指出的是,如果您的用户安装了 64 位 jdk,或者没有运行 Windows,那么您的 Applet 将无法运行。

于 2013-12-05T04:16:47.893 回答
0

查看jacob提供的示例:

例如 jacob-1.17_src.zip\jacob-1.17\samples\com\jacob\samples\applet

这是一个很好的例子,它是如何工作的——它甚至有一个 readme.txt 里面有完整的描述......

于 2013-12-06T07:20:23.870 回答