我的问题是 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,我将不胜感激。
答案 0 :(得分:0)
解决方案:
将dll放在C:\ Windows \ SysWOW64 而不是C:\ Windows \ System32 ,因为在64位Windows系统上System32将保留64位dll库和SysWOW64应保存32位dll库。
Windows架构师因为过去的命名决定以及Windows的有限重构能力而负担沉重。