我在运行一个非常基本的功能时获得此堆栈跟踪,该功能只需打开浏览器,导航到google.com并搜索某些字符串。
Exception in thread "main" java.lang.NoClassDefFoundError:
org/springframework/transaction/TransactionStatus
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Class.java:2701)
at java.lang.Class.privateGetPublicMethods(Class.java:2902)
at java.lang.Class.getMethods(Class.java:1615)
at cucumber.runtime.java.MethodScanner.scan(MethodScanner.java:40)
at cucumber.runtime.java.JavaBackend.loadGlue(JavaBackend.java:86)
at cucumber.runtime.Runtime.<init>(Runtime.java:92)
at cucumber.runtime.Runtime.<init>(Runtime.java:70)
at cucumber.runtime.Runtime.<init>(Runtime.java:66)
at cucumber.api.cli.Main.run(Main.java:35)
at cucumber.api.cli.Main.main(Main.java:18)
Caused by: java.lang.ClassNotFoundException:
org.springframework.transaction.TransactionStatus
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 11 more
有人能告诉我这里缺少什么吗?
答案 0 :(得分:6)
对于Intellij 2018.1,我猜是早期版本,默认情况下,“运行”配置获取 Glue 'cucumber.api.spring',您应该将其切换为'com.foreach.cuke'
转到“ 编辑配置”-“ 黄瓜”-胶水: com.foreach.cuke ...
答案 1 :(得分:2)
以下依赖项丢失。默认胶水cucumber.api.spring
无法找到类事务,因此会引发错误。向您的pom.xml
添加依赖项,它将解决您的问题
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
</dependency>
答案 2 :(得分:1)
您应该将“运行”配置切换为'com.foreach.cuke'
,而不是“ cucumber.api.spring”。.
转到'Edit Configurations'
-'Cucumber'
-Glue: com.foreach.cuke
...
答案 3 :(得分:0)
就 npm install <package_name> --save
而言,由于以下组件之间的不匹配而产生:
NoClassDefFoundError
版本 - JDK
- 将Solution
版本更新至最新版本。JDK
版本 - JUnit
- 让Solution
版本与JUnit
版本保持同步。cucumber
版本 - Selenium
- 将 Solution
版本更新为最新发布版本Selenium
版本 - WebDriver Binary
- 将 Solution
版本更新为最新发布版本WebDriver
版本 - Web Browser Binary
- 将 Solution
版本更新为最新发布版本