编译多个.java文件并带参运行依赖类时遇主类找不到问题
解决Java运行时找不到主类ClassB的问题
错误原因分析
- 编译后的
.class文件默认生成在src目录下,但你运行时的classpath只配置了lib/*.jar,没包含src目录,JVM找不到ClassB的字节码文件。 - 运行命令里写
src/ClassB是错误的,主类名应该直接写类名(无包结构时就是ClassB),而非文件路径。
快速修复方案
直接修改运行命令,把src目录加入classpath,同时正确指定主类名:
# Linux/macOS系统 java -cp "lib/*.jar:src" ClassB 参数1 参数2
# Windows系统(路径分隔符用;) java -cp "lib/*.jar;src" ClassB 参数1 参数2
比如传入参数Alice Bob,运行后会输出:
Hello Alice from Class B! Hello Bob from Class A!
更规范的项目结构优化(推荐)
为了区分源码和编译产物,建议指定编译输出目录,避免源码和字节码混放:
- 创建
bin目录用于存放编译后的.class文件:
mkdir bin
- 编译时指定输出目录:
javac -cp lib/*.jar -d bin src/*.java
- 运行时指定包含
bin目录的classpath:
# Linux/macOS java -cp "lib/*.jar:bin" ClassB 参数1 参数2
# Windows java -cp "lib/*.jar;bin" ClassB 参数1 参数2
内容的提问来源于stack exchange,提问作者Coldchain9
相关产品推荐
相关产品推荐

