Linux命令行运行Maven管理的Java项目(非Jar方式)求助
不用生成Jar包在Linux命令行运行Maven Java项目的方法
嘿,我明白你的困扰——转成Maven项目后Eclipse跑没问题,但Linux命令行不想打jar包就不知道怎么运行了对吧?我给你几个实用的方法,亲测有效:
方法1:用Maven Exec插件直接运行(最推荐)
这是Maven官方支持的直接执行Java类的方式,不用折腾类路径,非常省心:
- 首先检查你的
pom.xml,如果还没指定主类,可以加上这段配置(替换成你的主类全限定名,比如com.example.HelloWorld):
<build> <plugins> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>exec-maven-plugin</artifactId> <version>3.1.0</version> <configuration> <mainClass>你的主类完整路径</mainClass> </configuration> </plugin> </plugins> </build>
- 然后在Linux命令行进入项目根目录(就是
pom.xml所在的文件夹),直接执行:
mvn exec:java
如果不想修改pom.xml,也可以直接在命令行临时指定主类:
mvn exec:java -Dexec.mainClass="com.example.HelloWorld"
执行完就能看到你的Hello world !输出啦。
方法2:手动编译+运行(适合想了解底层逻辑的情况)
如果不想用插件,也可以手动处理编译和类路径:
- 先让Maven帮你编译项目,生成class文件:
mvn compile
编译好的class文件会存放在target/classes目录下。
2. 生成依赖的类路径(因为Maven项目的依赖都存在本地仓库里,手动加太麻烦):
mvn dependency:build-classpath -Dmdep.outputFile=classpath.txt
这个命令会把所有依赖jar包的路径写入classpath.txt文件。
3. 最后执行Java命令,把编译后的类目录和依赖路径都加入类路径:
java -cp "target/classes:$(cat classpath.txt)" com.example.HelloWorld
注意:Linux系统用冒号:分隔类路径,Windows才用分号;,别搞混了
容易踩坑的地方要注意
- 确认你的主类里有
public static void main(String[] args)方法,而且全限定名(包名+类名)没写错 - 如果项目有第三方依赖,一定要把依赖jar包加入类路径,不然会报
ClassNotFoundException - 所有命令都要在项目根目录执行,或者把路径写完整
内容的提问来源于stack exchange,提问作者zakaria35
相关产品推荐
相关产品推荐

