簡體   English   中英

帶有Maven-surefire-plugin的UnsatisfiedLinkError

[英]UnsatisfiedLinkError with maven-surefire-plugin

使用maven- surefire -plugin運行單元測試時,會發生以下錯誤:

java.lang.UnsatisfiedLinkError:無法在64位JVM上加載32位SWT庫

我知道如何在IDE中解決此問題,我只需要在測試的運行配置中選擇正確的運行時JRE。 但是,在TeamCity構建服務器上運行測試時,會發生上述錯誤。

是否有任何surefire或TeamCity選項來配置運行時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構建步驟時,請選擇具有適當“位數”(在您的情況下為x86)的目標JDK:

在此處輸入圖片說明

您的構建代理程序中至少應有一個已發現並可用的32位JDK。 您可以通過代理->已連接->->代理參數->環境變量來檢查特定代理是否屬於這種情況。 這是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.8 JDK。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM