执行 testng 套件时出现错误“线程“main”java.lang.NoClassDefFoundError:org/slf4j/LoggerFactory 中出现异常”

问题描述 投票:0回答:1

我尝试使用带有 Selenium 的 Eclipse 新设置来执行简单的 TestNG 脚本。 虽然使用相同的设置我可以运行其他 Java 类,但是当尝试运行 TestNG 套件时我收到此错误。

  • 硒版本 - 4.23.1
  • Eclipse 版本 - 2024-06 (4.32.0)
  • Chrome 版本 - 127.0.6533.120
  • Java 版本 - Java 22

我在添加 slf4j jars 后尝试过,但没有成功。

public class NewTest {
    WebDriver driver;

    @BeforeSuite
    public void openBrowser() { 
        System.setProperty("webdriver.chrome.driver",
                "D:\\Eclipse\\chromedriver-win64\\chromedriver-win64\\chromedriver.exe");
        WebDriver driver = new ChromeDriver();
        driver.manage().window().maximize();
    }
}

我得到了:

[RemoteTestNG] detected TestNG version 7.10.1
Exception in thread "main" java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory
    at org.testng.log4testng.Logger.lambda$getLogger$0(Logger.java:30)
    at java.base/java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1710)
    at org.testng.log4testng.Logger.getLogger(Logger.java:30)
    at org.testng.TestNG.<clinit>(TestNG.java:111)
    at org.testng.remote.support.RemoteTestNGFactory7_9.createRemoteTestNG(RemoteTestNGFactory7_9.java:16)
    at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:67)
Caused by: java.lang.ClassNotFoundException: org.slf4j.LoggerFactory
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525)
    ... 6 more

这是为什么?我该如何解决?

java eclipse selenium-webdriver testng slf4j
1个回答
0
投票

您遇到错误是因为您使用了两个不同版本的 SLF4J 库,

  1. 较旧的 (slf4j-jdk14-1.7.2) 和较新的实验性 (slf4j-api-2.1.0-alpha1)。
  2. 这些版本彼此不兼容,混合它们可能会导致您看到的 NoClassDefFoundError 等问题。

对于 SLF4J 1.7.x:

Maven:

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>1.7.36</version>
</dependency>
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-jdk14</artifactId>
    <version>1.7.36</version>
</dependency>

摇篮:

implementation 'org.slf4j:slf4j-api:1.7.36'
implementation 'org.slf4j:slf4j-jdk14:1.7.36'

对于 SLF4J 2.x:

Maven:

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>2.0.9</version>
</dependency>
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-jdk14</artifactId>
    <version>2.0.9</version>
</dependency>

摇篮

implementation 'org.slf4j:slf4j-api:2.0.9'
implementation 'org.slf4j:slf4j-jdk14:2.0.9'
© www.soinside.com 2019 - 2024. All rights reserved.