如何在Windows命令提示符中运行带外部依赖的Java类?
如何在Windows命令提示符中运行依赖外部库的Java类(Maven项目)
当然可以在Windows CMD中运行带外部库的Java类,你遇到的java.lang.NoClassDefFoundError是因为JVM运行时找不到Jackson的依赖类——IDE会自动帮你把依赖加入类路径,但CMD环境下需要手动配置。下面是几种实用的解决方法:
方法1:用Maven打包成可执行"胖Jar"(最省心)
通过Maven插件把你的代码和所有依赖打包成一个独立Jar,直接就能运行:
- 在项目的
pom.xml中添加maven-shade-plugin配置(替换主类全限定名,比如你的Test类在com.example包下就写com.example.Test):
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin</artifactId> <version>3.4.1</version> <executions> <execution> <phase>package</phase> <goals> <goal>shade</goal> </goals> <configuration> <transformers> <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> <mainClass>Test</mainClass> </transformer> </transformers> </configuration> </execution> </executions> </plugin> </plugins> </build>
- 打开CMD,进入项目根目录,运行
mvn package - 打包完成后,在
target目录下找到带-shaded后缀的Jar文件,运行命令:
java -jar target/你的项目名-版本号-shaded.jar
方法2:手动指定类路径运行
如果不想打包,直接用编译后的class文件运行,需要把依赖Jar和class目录加入类路径:
- 先运行
mvn compile编译项目,生成的Test.class会在target/classes目录下 - 找到Maven本地仓库中的Jackson依赖Jar(默认路径是
C:\Users\你的用户名\.m2\repository\com\fasterxml\jackson),需要找全3个核心Jar:jackson-databind、jackson-core、jackson-annotations - 在CMD中用
-cp参数指定类路径(注意Windows下用;分隔路径):
java -cp "target\classes;C:\Users\你的用户名\.m2\repository\com\fasterxml\jackson\databind\jackson-databind\2.15.2\jackson-databind-2.15.2.jar;C:\Users\你的用户名\.m2\repository\com\fasterxml\jackson\core\jackson-core\2.15.2\jackson-core-2.15.2.jar;C:\Users\你的用户名\.m2\repository\com\fasterxml\jackson\annotations\jackson-annotations\2.15.2\jackson-annotations-2.15.2.jar" Test
注意:如果Test类有包结构,必须用全限定类名(比如com.example.Test)代替命令中的Test
方法3:用Maven exec插件直接运行
借助Maven插件自动处理依赖,不用手动配置类路径:
打开CMD进入项目根目录,运行命令(替换主类全限定名):
mvn exec:java -Dexec.mainClass="Test"
额外注意点
- 确保依赖Jar的版本和
pom.xml中配置的一致,避免版本不兼容 - Windows系统类路径分隔符是
;,Linux/macOS是:,不要混淆
内容的提问来源于stack exchange,提问作者Runsva
相关产品推荐
相关产品推荐

