com4j работает в затмении, но не работает в банке - PullRequest
0 голосов
/ 16 апреля 2019

Я написал инструмент (с помощью пружинная загрузка ), чтобы получить подробности от HP QC v10 .Для этого я использую com4j API.Программа отлично работает в eclipse , но выдает следующее Exception , когда я запускаю код через jar (который я создал с помощью maven install).

Я создал оболочку для OTAClient.dll и создал jar файл оболочки qcconn.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 Ответ

1 голос
/ 16 апреля 2019

Поскольку я использовал 32-битную JVM, каждый раз мне не хватало регистрации com4j-x86.dll. После регистрации. Это начало работать. Также, пожалуйста, убедитесь, что при запуске jar следующий файл dll должен присутствовать в той же папке, где присутствует jar: com4j-x86.dll, OTAClient.dll и WebClient.dll

...