You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VS Code调试Maven Java项目ClientRunner时找不到主类的问题问询

解决Java模块化Maven项目中Test目录演示类调试找不到主类的问题

问题根源

你的项目是Java模块化项目(src/main/java下存在module-info.java),但src/test/java目录下没有对应的模块描述文件。调试时VS Code的Java插件会默认在主模块中查找ClientRunner类,而该类实际位于未声明模块的test编译目录中,因此出现找不到主类的错误。

解决方案(均不将演示类加入SDK包)

方案一:给Test目录添加模块描述文件(推荐)

给test目录创建独立的module-info.java,声明对主模块的依赖,该文件不会被打包进SDK的发布jar中。

  1. 在src/test/java下创建module-info.java,内容示例:
module com.oursdk.client.stream.test {
    // 依赖主模块(名称需与src/main/java下的module-info.java一致)
    requires com.oursdk.client.stream;
    // 依赖项目中test scope的库
    requires com.fasterxml.jackson.databind;
    requires org.jasypt;
    // 依赖主模块已声明的第三方库(如SLF4J)
    requires org.slf4j;
    
    // 若ClientRunner需要反射访问主模块类,添加opens声明(按需)
    opens com.oursdk.client.stream to com.fasterxml.jackson.databind;
}
  1. 执行Maven编译命令,确保test代码编译完成:
mvn clean compile test-compile
  1. 重新在VS Code中调试ClientRunner,此时插件会识别到该类属于test模块,正常加载。

方案二:手动修改VS Code调试配置

直接在调试配置中指定模块路径和类路径,包含test编译输出目录。

  1. 打开VS Code的调试面板,生成launch.json配置文件(点击调试按钮→选择Java→生成默认配置)。
  2. 修改配置内容,添加modulePaths和classPaths:
{
    "version": "0.2.0",
    "configurations": [
        {
            "type": "java",
            "name": "ClientRunner",
            "request": "launch",
            "mainClass": "com.oursdk.client.stream.ClientRunner",
            "modulePaths": [
                "${workspaceFolder}/target/classes",
                "${workspaceFolder}/target/test-classes"
            ],
            "classPaths": [
                "${workspaceFolder}/target/test-classes"
            ]
        }
    ]
}
  1. 执行mvn clean compile test-compile后启动调试即可。

方案三:使用Maven Exec插件运行(适合快速执行)

通过Maven插件自动处理类路径和模块路径,无需修改VS Code配置。

  1. 在pom.xml的<build><plugins>中添加exec插件配置:
<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>exec-maven-plugin</artifactId>
    <version>3.1.0</version>
    <configuration>
        <mainClass>com.oursdk.client.stream.ClientRunner</mainClass>
        <modulePath>
            <path>${project.build.outputDirectory}</path>
            <path>${project.build.testOutputDirectory}</path>
        </modulePath>
    </configuration>
</plugin>
  1. 在VS Code的Maven插件中执行exec:java目标,或在终端运行:
mvn exec:java

关键注意事项

  • 确保src/main/java/module-info.java中exports了ClientRunner需要访问的主模块包,示例:
// src/main/java/module-info.java
module com.oursdk.client.stream {
    exports com.oursdk.client.stream;
    // 主模块依赖的第三方库声明
    requires io.netty.buffer;
    requires io.netty.codec;
    requires org.slf4j;
    // ...其他依赖
}
  • 每次修改模块配置后,务必执行mvn clean compile test-compile刷新编译输出。

内容的提问来源于stack exchange,提问作者tdemay

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 07:49:54