maven верный плагин, чтобы найти родной DLL - PullRequest
0 голосов
/ 04 мая 2018

Моя проблема в том, чтобы Maven протестировать только один из моих проектов с 32-битным движком Java, чтобы иметь возможность использовать определенную нативную библиотеку (на самом деле SSJavaCOM .dll от Sparx Systems). Он недоступен в 64-разрядной версии. Все остальные проекты должны быть запущены в 64-битной jvm.

Я использую Eclipse с m2e и настроил pom.xml для своего проекта. Я узнал, что я могу переключать jvm в тесте Maven, используя maven-surefire-plugin и настраивая jvm . Я поместил SSJavaCOM.dll в C: \ Windows \ System32 и подумал, что его нужно найти.

  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.21.0</version>
    <configuration>
      <jvm>../../../../../Program Files (x86)/Java/jre1.8.0_172/bin/java</jvm>
      <forkMode>once</forkMode>
    </configuration>
  </plugin>

(я пробовал C: / вместо пяти ../ безуспешно)

При запуске Maven Test Я получаю сообщение об ошибке

java.lang.UnsatisfiedLinkError: no SSJavaCOM in java.library.path
at eu.ngong.renOld.RenOldTest.commandline_test(RenOldTest.java:40)

Я также пытался настроить Surefire с

      <argLine>-Djava.library.path=../../../../../Windows/System32</argLine>

но привело к тому же сообщению об ошибке (также с C: /)

Буду признателен, если у вас есть идея получше, чем настройка Surefire, запускающая настольную программу в 32-разрядной версии, или помощь в правильной настройке Surefire.

1 Ответ

0 голосов
/ 05 мая 2018

Решение:

поместите dll в C: \ Windows \ SysWOW64 вместо C: \ Windows \ System32 , так как в 64-битных системах Windows System32 должна содержать 64-битные библиотеки dll и SysWOW64 должен содержать 32-битные библиотеки dll.

Архитекторы Windows обременены именами решений своего прошлого и ограниченной способностью рефакторинга Windows.

см. https://www.howtogeek.com/326509/whats-the-difference-between-the-system32-and-syswow64-folders-in-windows/

...