【问题标题】:maven surefire plugin to find native dllmaven surefire 插件来查找本机 dll
【发布时间】:2018-05-04 18:11:23
【问题描述】:

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

我将 Eclipsem2e 一起使用,并为我的项目配置了 pom.xml。我了解到我可以通过使用 ma​​ven-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:/)

如果您有比配置 Surefire 以 32 位启动桌面程序更好的想法或帮助我正确配置 Surefire,我将不胜感激。

【问题讨论】:

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


    【解决方案1】:

    解决方案:

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

    【讨论】:

    • 奇怪的WINDOZE。 System32 用于 64 位架构,SysWOW64 用于 32??
    猜你喜欢
    • 2021-10-30
    • 2018-12-20
    • 1970-01-01
    • 2011-03-12
    • 2010-10-07
    • 2019-08-11
    • 1970-01-01
    • 2016-02-20
    • 2016-01-01
    相关资源
    最近更新 更多