簡體   English   中英

Eclipse - org.junit 無法解析,即使它位於 Maven 依賴項中

[英]Eclipse - org.junit cannot be resolved, even though it's in the Maven dependencies

我決定在這個主題中寫另一個問題,因為其他帖子中沒有解決方案對我有用。

我的問題是 eclipse 根本無法定位org.junit包,即使它在 Maven 依賴項中可用,並且在展開junit-4.12.jar后可以看到所有必需的類。

問題截圖

關於項目和環境的一些技術信息:

  • Java 9 + eclipse Oxygen.2 (4.7.2)
  • 項目分為 Jigsaw 模塊。

這是我已經嘗試過的:

  • 從項目的 pom.xml 和父級的 pom.xml 中刪除作用域。 父級的 POM 如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>my-group-id</groupId>
    <artifactId>my-artifact-id</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>pom</packaging>

    <name>my-name</name>
    <url>http://maven.apache.org</url>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.2</version>
                <configuration>
                    <source>9</source>
                    <target>9</target>
                </configuration>
            </plugin>
        </plugins>
    </build>

    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-api</artifactId>
            <version>2.10.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-core</artifactId>
            <version>2.10.0</version>
        </dependency>
    </dependencies>
    <modules>
        <module>module.1</module>
        <module>module.2</module>
        <module>module.3</module>
        <module>module.4</module>
        <module>module.5</module>
        <module>module.6</module>
        <module>module.7</module>
    </modules>
</project>

...和子項目的 POM 如下所示:

<?xml version="1.0"?>
<project
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
    xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>my-group-id</groupId>
        <artifactId>my-artifact-id</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>
    <artifactId>module.4</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>my-module-4-name</name>
    <url>http://maven.apache.org</url>
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>
</project>

如屏幕截圖所示,該類位於正確的文件夾 (src/test/java) 中,因此這不是范圍問題。

  • 使用快速修復“將 JUnit 4 庫添加到構建路徑”。
  • 從 eclipse 工作區中刪除所有 .marker 文件。
  • 在 Eclipse 中關閉並重新打開所有項目(多次)。
  • 重新啟動日食(多次)。
  • 在 Eclipse 中清理項目(多次)。
  • Maven > Update Project...從 Eclipse 為所有項目啟動(多次)。
  • 這個答案的可能解決方案- 我的任何 pom.xml 文件中都沒有定義sourceDirectory元素。
  • 2018 年 2 月 24 日更新從 .m2 存儲庫中刪除所有內容並再次下載依賴項- 沒有幫助。

我認為還值得一提的是:

  • 運行mvn test結果:

     Results : Tests run: 0, Failures: 0, Errors: 0, Skipped: 0
  • 從 Eclipse 啟動測試會導致java.lang.Exception: No runnable methods ,這是預期的,因為@Test注釋未解析。
  • BUILD SUCCESS運行mvn verify結果。
  • 同樣的問題發生,當我嘗試import org.apache.logging.log4j.core.Logger ,所以這不是 JUnit 問題。

升級到 Eclipse Photon 后,我的工作區項目在識別 junit 和其他庫時遇到了同樣的問題。 對我有用的是 Maven > Update Project(您可以選擇所有有問題的打開項目)。 我的項目都在 Java 8 中。

該問題可能與在 Java 9 中管理非模塊化 jar 的方式有關。為每個不支持 Java 9 的非模塊化 Java 應用程序創建自動模塊,並且它們的名稱是基於名稱創建的非模塊化罐子。 為了解決這個問題,您能否在 module-info.java 中添加“requires junit”?

requires junit;

配置看起來不錯。

請檢查存儲庫c:\\users\\bartl\\.m2\\repository\\junit的 jar 文件,因為此文件可能已損壞。 在我的情況下,maven 使用另一個不同於用戶主目錄中的存儲庫,因此 maven 能夠成功編譯。

我建議刪除存儲庫中的整個 junit 目錄,讓 eclipse 再次下載文件。

當互聯網連接不良或根本沒有互聯網連接時,我有時會遇到這種行為。

添加依賴

   <dependency>
        <groupId>junit</groupId>
        <artifactId>junit-dep</artifactId>
        <version>4.8.2</version>
    </dependency>

它起作用了。

暫無
暫無

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

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