当使用maven-surefire-plugin运行单元测试时,会发生以下错误:
java.lang.UnsatisfiedLinkError:无法在64位JVM上加载32位SWT库
我知道如何在IDE中解决这个问题,我只需在测试的运行配置中选择正确的运行时JRE。但是,当测试在TeamCity构建服务器上运行时,会发生上述错误。
是否有任何可以配置运行时JRE的万无一失或TeamCity选项?
这是我目前的安全配置:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<skipTests>false</skipTests>
<includes>
<include>**/*Test.java</include>
</includes>
<parallel>methods</parallel>
<threadCount>10</threadCount>
</configuration>
</plugin>发布于 2015-12-01 10:42:42
在TeamCity中配置Maven构建步骤时,使用适当的"bitness“(在您的示例中为x86)选择一个目标JDK:

至少您的一个构建代理应该有一个32位的JDK已被发现和可用。您可以通过代理( -> Connected -> -> agent参数-> Environment变量)检查特定代理是否是这种情况。下面是一个JDK_*变量及其值的示例:
JDK_14 C:\Program Files (x86)\Java\jdk1.4.2_19
JDK_15 C:\Program Files\Java\jdk1.5.0_22
JDK_15_x64 C:\Program Files\Java\jdk1.5.0_22
JDK_16 C:\Program Files (x86)\Java\jdk1.6.0_45
JDK_16_x64 C:\Program Files\Java\jdk1.6.0_45
JDK_17 C:\Program Files (x86)\Java\jdk1.7.0_76
JDK_17_x64 C:\Program Files\Java\jdk1.7.0_76
JDK_18 C:\Program Files\Java\jdk1.8.0_40
JDK_18_x64 C:\Program Files\Java\jdk1.8.0_40在这里,具有相同值的JDK_18和JDK_18_x64意味着代理没有找到32位1.8JDK。
发布于 2015-12-01 08:45:18
您可以使用jvm标记来指定要使用哪个JVM:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<jvm>${env.MY_JAVA_HOME}/bin/java</jvm>
<skipTests>false</skipTests>
<includes>
<include>**/*Test.java</include>
</includes>
<parallel>methods</parallel>
<threadCount>10</threadCount>
</configuration>
</plugin>本例假设您有一个MY_JAVA_HOME环境变量。
https://stackoverflow.com/questions/34016008
复制相似问题