[英]Eclipse - org.junit cannot be resolved, even though it's in the Maven dependencies
我決定在這個主題中寫另一個問題,因為其他帖子中沒有解決方案對我有用。
我的問題是 eclipse 根本無法定位org.junit
包,即使它在 Maven 依賴項中可用,並且在展開junit-4.12.jar
后可以看到所有必需的類。
關於項目和環境的一些技術信息:
這是我已經嘗試過的:
<?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) 中,因此這不是范圍問題。
Maven > Update Project...
從 Eclipse 為所有項目啟動(多次)。sourceDirectory
元素。我認為還值得一提的是:
運行mvn test
結果:
Results : Tests run: 0, Failures: 0, Errors: 0, Skipped: 0
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.