不满意链接错误与 maven-surefire-plugin

UnsatisfiedLinkError with maven-surefire-plugin

当运行使用maven-surefire-plugin进行单元测试时,出现此错误:

java.lang.UnsatisfiedLinkError: Cannot load 32-bit SWT libraries on 64-bit JVM

我知道如何在我的 IDE 中解决这个问题,我只需要在测试的 运行 配置中 select 正确的 运行time JRE。但是在TeamCity构建服务器上测试运行时,出现上述错误。

是否有任何 surefire 或 TeamCity 选项来配置 运行time JRE?

这是我当前的 surefire 配置:

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

您可以使用 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 环境变量。

TeamCity 中配置 Maven 构建步骤时,select 目标 JDK 具有适当的 "bitness"(在你的情况下是 x86):

您的至少一个构建代理应该发现并可用 32 位 JDK。您可以通过 Agents -> Connected -> -> Agent Parameters -> Environment Variables 检查特定代理是否属于这种情况。这是 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_18JDK_18_x64具有相同的值意味着代理没有找到一个32位的1.8JDK。