Java项目中无法运行WireMock服务,编译报错求助
问题原因及解决步骤
1. 依赖作用域限制
你的WireMock依赖设置了<scope>test</scope>,这个作用域下的依赖仅在测试代码目录(src/test/java)中可用。如果你的testWiremock.java放在src/main/java目录下,编译时自然找不到相关类。
解决方法二选一:
- 移除
<scope>test</scope>,让依赖在主代码中也能被引用:<dependency> <groupId>com.github.tomakehurst</groupId> <artifactId>wiremock-jre8</artifactId> <version>2.35.0</version> <!-- 去掉test作用域限制 --> </dependency> - 或者把
testWiremock.java移动到src/test/java目录下,保持依赖的test作用域不变。
2. 缺失必要的导入语句
代码中直接使用WireMockServer和options(),但没有导入对应的包,编译器无法识别这些类和方法。需要在类顶部添加导入:
import com.github.tomakehurst.wiremock.WireMockServer; import static com.github.tomakehurst.wiremock.core.WireMockConfiguration.options;
3. 代码中的拼写错误
你的代码里有两处变量名拼写错误:
- 初始化时是
wiremockServer(全小写m),启动时写成了wireMockServer(大写M) - 停止服务器时写成了
wreMockServer(多了个r)
修正后的完整代码:
import com.github.tomakehurst.wiremock.WireMockServer; import static com.github.tomakehurst.wiremock.core.WireMockConfiguration.options; public class testWiremock{ public static void main(String[] args){ WireMockServer wireMockServer = new WireMockServer(options().port(8080)); wireMockServer.start(); System.out.println("Server running successfully!"); wireMockServer.stop(); } }
4. 编译运行验证
修改完成后,执行mvn compile编译代码,然后可以用mvn exec:java -Dexec.mainClass="testWiremock"来运行主类(如果类有包名,要加上完整包路径,比如com.mycode.testWiremock)。
内容的提问来源于stack exchange,提问作者PPGoodMan
相关产品推荐
相关产品推荐

