如何用命令行编译并运行多类Java项目?编译运行报错求助
正确编译并运行多类Java项目的命令行步骤
问题原因拆解
- 首次编译失败:你在
Abstract目录执行命令时,当前目录没有任何.java源文件(所有源码都在src/com/Testing子目录),*.java匹配不到有效文件;同时编译器因类路径未指向源码目录,找不到Student类。 - 运行报错:
Main类属于com.Testing包(从报错信息com/Testing/Main可判断),直接执行java Main会忽略包结构,导致JVM无法定位正确的类路径。
标准操作步骤
假设你的项目结构如下:
Abstract/ └── src/ └── com/ └── Testing/ ├── Main.java └── Student.java
1. 编译源文件(分离源码与字节码)
推荐将编译后的.class文件单独存放,避免和源码混杂:
- 切换到项目根目录
Abstract:cd D:\Desktop\Development\Java\Section 4\Abstract - 创建
bin目录用于存放字节码(如果没有的话):mkdir bin - 执行编译命令:
javac -d bin -classpath src src/com/Testing/*.java-d bin:指定字节码输出到bin目录,编译器会自动根据包结构生成com/Testing子目录存放.class文件-classpath src:告诉编译器在src目录下查找依赖类(比如Student)src/com/Testing/*.java:指定要编译的所有源码文件
2. 运行主类
从Abstract目录执行运行命令,必须指定完整包路径的类名:
java -classpath bin com.Testing.Main
-classpath bin:让JVM在bin目录下查找类文件com.Testing.Main:完整的主类名,对应包结构下的Main类
简化方案(不分离源码与字节码)
如果直接在src/com/Testing目录编译,字节码会和源码放在一起,此时需回到Abstract目录执行运行命令:
java -classpath src com.Testing.Main
但这种方式会导致源码与字节码混杂,不推荐用于规范项目。
内容的提问来源于stack exchange,提问作者cent
相关产品推荐
相关产品推荐

