com4j在eclipse中工作,但在jar中不工作

时间:2019-04-16 06:20:04

标签: java spring-boot hp-quality-center com4j

我编写了一个工具(使用 spring boot )来从 HP QC v10 获取详细信息。我为此使用了 com4j API。程序在 eclipse 中可以正常运行,但是当我通过 jar (我使用 maven 创建的)运行代码时,会抛出 Exception strong>安装)。

我为 OTAClient.dll 生成了包装,并为包装 qcconn.jar 创建了 jar 文件。我还注册了dll文件: OTAClient.dll,WebClient.dll com4j-amd64.dll 。我正在使用 jdk 8 (32位)。

我检查了我的工具的 jar 文件,该文件是由 maven 安装生成的,并且其中都包含 jar com4j .jar qcconn.jar

我运行jar文件时抛出异常: java -jar mytool.jar

        at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:184) ~[spring-beans-5.1.6.RELEASE.jar!/:5.1.6.RELEASE]
        at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:87) ~[spring-beans-5.1.6.RELEASE.jar!/:5.1.6.RELEASE]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:1295) ~[spring-beans-5.1.6.RELEASE.jar!/:5.1.6.RELEASE]
        ... 38 common frames omitted
Caused by: java.lang.ExceptionInInitializerError: null
        at com.qc.ClassFactory.createTDConnection(ClassFactory.java:16) ~[qcconn-1.0.jar!/:na]
        at com.qc.report.gen.app.qc.connection.QCTool.<init>(QCTool.java:23) ~[classes!/:0.0.1-SNAPSHOT]
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:1.8.0_201]
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) ~[na:1.8.0_201]
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) ~[na:1.8.0_201]
        at java.lang.reflect.Constructor.newInstance(Unknown Source) ~[na:1.8.0_201]
        at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:172) ~[spring-beans-5.1.6.RELEASE.jar!/:5.1.6.RELEASE]
        ... 40 common frames omitted
Caused by: java.lang.NullPointerException: null
        at com4j.COM4J.loadNativeLibrary(COM4J.java:567) ~[com4j-1.0.jar!/:na]
        at com4j.COM4J.<clinit>(COM4J.java:522) ~[com4j-1.0.jar!/:na]
        ... 47 common frames omitted

Exception in thread "Com4J shutdown hook" java.lang.NoClassDefFoundError: Could not initialize class com4j.COM4J
        at com4j.COM4J$3.run(COM4J.java:476)````

1 个答案:

答案 0 :(得分:1)

当我使用32位JVM时,每次我都缺少注册com4j-x86.dll的机会。 注册后。它开始工作。 另外,请确保在运行jar时,在存在jar的同一文件夹下应存在以下dll文件:com4j-x86.dll,OTAClient.dll和WebClient.dll