Java引用外部Jar包编译报错:找不到org.json.simple包求助
解决"package org.json.simple does not exist"编译错误
我来帮你排查这个问题,大概率是以下几个操作细节出了问题:
1. 操作系统的类路径分隔符用错了
你写的编译命令里用了.;json-simple-1.1.1.jar,这个分隔符;是Windows系统的类路径分隔符,但如果是在Linux或macOS(类Unix系统)下,分隔符应该用:。而且单引号在类Unix终端里可能会让shell无法正确解析分隔符,导致jar包没被加入类路径。
如果你用的是Windows,建议把命令改成:
javac -cp ".;json-simple-1.1.1.jar" Foo.java用双引号包裹类路径,避免路径中包含空格时出现问题。
如果你用的是Linux/macOS,命令应该改成:
javac -cp ".:json-simple-1.1.1.jar" Foo.java或者直接去掉引号(无空格路径时可用):
javac -cp .:json-simple-1.1.1.jar Foo.java
2. jar包不在当前执行命令的目录下
你需要确认json-simple-1.1.1.jar是否在你执行javac命令的当前工作目录里。如果jar包在其他路径(比如./lib子目录),你需要把路径补全:
Windows示例(jar在lib子目录):
javac -cp ".;lib/json-simple-1.1.1.jar" Foo.javaLinux/macOS示例(jar在lib子目录):
javac -cp ".:lib/json-simple-1.1.1.jar" Foo.java
3. 确认jar包内容是否正确
虽然你说jar里有org/json/simple/ItemList.class,但可以再用更精准的命令验证一下,避免下载错了jar包:
jar -tvf json-simple-1.1.1.jar | grep "ItemList.class"
如果输出里没有org/json/simple/ItemList.class,说明你下载的jar包可能不对,需要重新获取正确的版本。
额外提示:运行时也要指定类路径
编译成功后,运行程序时同样需要指定类路径,否则会出现NoClassDefFoundError:
- Windows:
java -cp ".;json-simple-1.1.1.jar" Foo - Linux/macOS:
java -cp ".:json-simple-1.1.1.jar" Foo
内容的提问来源于stack exchange,提问作者brad
相关产品推荐
相关产品推荐

