Ubuntu环境下运行GitHub Java项目AI-TicketToRide启动失败求助
我想运行GitHub上的一个Java程序,根据其README.md说明,应该通过src/ttr.main/TTRMain启动程序。我在Ubuntu 20.04环境下尝试启动时,持续报错:
Error: Could not find or load main class src.ttr.main.TTRMain
Caused by: java.lang.ClassNotFoundException: src.ttr.main.TTRMain
我在~/Downloads/AI-TicketToRide-master/目录(README.md和.classpath文件所在目录)尝试了以下命令:
java src.ttr.main.TTRMain java src/ttr.main/TTRMain src/ttr.main/TTRMain java ttr.main.TTRMain java -jar JGame.jar java -cp . src.ttr.main.TTRMain java -cp . ttr.main.TTRMain
同时我也在~/Downloads/AI-TicketToRide-master/bin/ttr/main/和~/Downloads/AI-TicketToRide-master/src/ttr/main/目录下尝试了上述命令,但都没有成功。
我的环境是Ubuntu 20.04,OpenJDK版本为11.0.20.1 2023-08-24。请问我应该从哪个目录启动程序?是否需要设置类路径?具体该如何操作?
1. 确定基准启动目录
回到项目根目录~/Downloads/AI-TicketToRide-master/,这是.classpath和README.md所在的位置,是正确的操作基准目录。
2. 先编译源码(若未编译)
项目源码存放在src/目录下,需要先编译生成可执行的字节码文件:
javac -d bin src/ttr/main/TTRMain.java
参数-d bin指定编译后的.class文件输出到bin/目录,这是项目约定的字节码存放路径。
3. 正确启动程序
编译完成后,使用以下命令启动,核心是指定正确的类路径和主类名:
java -cp bin ttr.main.TTRMain
关键注意事项
- 主类名是
ttr.main.TTRMain,不是src.ttr.main.TTRMain:src/是源码存放目录,不属于包结构的一部分,编译后的类文件在bin/下遵循ttr.main的包层级。 - 类路径必须指向字节码根目录:
bin/是编译后类文件的根目录,-cp bin用于告诉JVM从该目录查找类资源。 - 若项目依赖外部JAR(比如
.classpath中提到的JGame.jar),需要将依赖也加入类路径:
java -cp "bin:JGame.jar" ttr.main.TTRMain
如果JGame.jar不在根目录,需替换为实际路径,比如lib/JGame.jar(根据项目结构调整)。
内容的提问来源于stack exchange,提问作者ffonz

