在Eclipse中使用Selenium时遭遇org/json/JSONException类未找到错误
解决Selenium测试中的
java.lang.NoClassDefFoundError: org/json/JSONException错误 嘿,我之前也碰到过这个问题,别着急,咱们一步步排查解决:
错误原因解析
这个NoClassDefFoundError本质是编译时能找到对应的类,但运行时JVM找不到。这里是因为你的项目缺少了org.json相关的依赖包——Selenium(尤其是ChromeDriver)在启动和配置过程中会用到JSON来处理一些参数,这个包是很容易被忽略的必要依赖,很多人会误以为只加Selenium核心JAR就够了。
具体解决方案
手动添加JAR包(非构建工具项目)
去下载org.json的官方JAR包(比如json-java),把它放到项目的lib目录下,然后在IDE里右键项目→Build Path→Add to Build Path,确保这个JAR被包含到运行时类路径中。用Maven/Gradle管理依赖(推荐)
如果你的项目用构建工具,直接在配置文件里添加依赖:
Maven(pom.xml):<dependency> <groupId>org.json</groupId> <artifactId>json</artifactId> <version>20230618</version> <!-- 可以用最新稳定版 --> </dependency>Gradle(build.gradle):
implementation 'org.json:json:20230618'添加后刷新依赖,构建工具会自动下载并管理这个包。
检查IDE的运行时类路径配置
有时候即使加了JAR,IDE也可能没把它放到运行时路径里:- Eclipse:右键项目→
Build Path→Configure Build Path→Libraries,找到添加的json.jar,确保它的状态正常,没有红色叉号; - IntelliJ:打开
File→Project Structure→Modules→Dependencies,找到json依赖,把作用域设为Runtime或者Compile。
- Eclipse:右键项目→
清理项目缓存并重建
缓存问题也可能导致类找不到:- Eclipse:点击
Project→Clean,选择你的项目清理后重新编译; - IntelliJ:点击
File→Invalidate Caches...,选择Invalidate and Restart,重启后再运行测试。
- Eclipse:点击
顺便提个小细节
你的测试代码里有一行URL写得有问题:
driver.get("http://www.amazon.com\test\test");
这里的反斜杠\是Java的转义字符,会导致URL格式错误,应该改成正斜杠/:
driver.get("http://www.amazon.com/test/test");
内容的提问来源于stack exchange,提问作者Romit Gupta
相关产品推荐
相关产品推荐

