maven surefire插件找到原生dll

时间:2018-05-04 18:11:24

标签: java maven enterprise-architect maven-surefire-plugin

我的问题是 Maven测试只是我的一个项目与 32位 java引擎,以便能够使用某个本机库(实际上 Sparx Systems的SSJavaCOM.dll )。它不支持64位。所有其他项目应保持在64位jvm中运行。

我正在使用 Eclipse m2e 并为我的项目配置了一个pom.xml。我了解到我可以使用 maven-surefire-plugin 并配置 jvm 来在Maven测试中切换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测试时,我收到失败消息

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:/)

如果您比32位的桌面程序配置Surefire或者帮助我正确配置Surefire,我将不胜感激。

1 个答案:

答案 0 :(得分:0)

解决方案:

将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/