无需Eclipse运行Maven项目遇错:javac提示org.json包不存在
解决Maven项目用
javac运行时找不到org.json包的问题 嘿,这问题我熟!你直接敲javac main.java报错,核心原因是Maven管理的依赖jar包不在javac默认的类路径里——javac只会盯着当前目录下的类文件,而org.json这类依赖是存在你本地Maven仓库里的,它根本不知道去哪找。
下面给你几个靠谱的解决办法,按从省心到灵活的顺序来:
方法一:直接用Maven运行程序(最推荐)
既然是Maven项目,何必自己折腾依赖路径?让Maven帮你搞定一切:
- 先确认你的
pom.xml里已经正确引入org.json依赖(如果还没加,赶紧补上):<dependency> <groupId>org.json</groupId> <artifactId>json</artifactId> <version>20240303</version> <!-- 可以换成你需要的版本 --> </dependency> - 切换到项目根目录(就是放
pom.xml的那个文件夹),执行命令直接运行主类:
注意把mvn exec:java -Dexec.mainClass="com.main"com.main换成你实际的主类全限定名——因为你的项目结构是src/com/main.java,所以类的包名必须是com,主类如果叫main,全限定名就是com.main。
方法二:用Maven生成类路径,再手动用javac编译运行
如果非要自己用javac操作,那得明确告诉它去哪找依赖jar包:
- 先让Maven帮你生成所有依赖的类路径清单:
执行完后,项目根目录会多出一个mvn dependency:build-classpath -Dmdep.outputFile=classpath.txtclasspath.txt,里面列了所有依赖jar包的完整路径。 - 编译你的Java文件,指定类路径:
要是文件多,也可以用通配符javac -cp "$(cat classpath.txt)" src/com/main.java src/com/otherClass.javasrc/com/*.java一次性编译所有类。 - 编译完成后,运行主类:
这里的java -cp "$(cat classpath.txt):." com.main:.是把当前目录(也就是编译后生成的.class文件所在目录)加入类路径。
额外提醒:检查类的包声明
看你的项目结构是src/com/main.java,那main.java的开头必须有包声明:
package com; public class main { public static void main(String[] args) { // 你的业务代码 } }
要是没加这个package com;,不仅编译容易出问题,运行时也会找不到类。
内容的提问来源于stack exchange,提问作者Marcos Ayala
相关产品推荐
相关产品推荐

