求助:Linux下如何运行带Maven依赖的IntelliJ编写Java程序
嘿,我太懂你这种刚从IDE切换到命令行的困惑了!毕竟IntelliJ已经默默帮我们把依赖管理、路径配置这些杂活全搞定了,自己敲命令的时候一下子就懵了对吧?别担心,既然你的项目是用Maven管理的,咱们直接用Maven的命令来处理,比手动折腾classpath简单一万倍~
方法一:用Maven直接编译并运行
首先得确认你能在命令行里用Maven:
- 打开命令行,输入
mvn -v,如果能看到Maven的版本信息,说明已经配置好了;如果没反应,要么是没装Maven,要么是环境变量没配——其实IntelliJ自带了Maven,你可以用项目根目录下的mvnw(Windows是mvnw.cmd)来代替mvn命令,不用额外装。
接下来按步骤来:
- 先切换到你的项目根目录(就是有
pom.xml文件的那个文件夹) - 执行编译命令:
mvn compile,这一步Maven会自动下载所有需要的依赖,还会把你的Java代码编译成class文件 - 然后运行主类:
mvn exec:java -Dexec.mainClass="你的主类全限定名",比如你的主类是com.example.MyMain,那命令就是mvn exec:java -Dexec.mainClass="com.example.MyMain"
方法二:打包成可执行Jar包,随时随地运行
如果想把程序做成一个单独的文件,方便拷贝或者以后直接运行,就打包成包含所有依赖的可执行Jar:
- 先修改项目里的
pom.xml,添加一个插件配置,让Maven打包的时候把所有依赖都塞进去:
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-assembly-plugin</artifactId> <version>3.3.0</version> <configuration> <descriptorRefs> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> <archive> <manifest> <!-- 这里替换成你的主类全限定名 --> <mainClass>com.example.MyMain</mainClass> </manifest> </archive> </configuration> <executions> <execution> <id>make-assembly</id> <phase>package</phase> <goals> <goal>single</goal> </goals> </execution> </executions> </plugin> </plugins> </build>
- 回到命令行,执行
mvn package,等命令跑完,去项目的target文件夹里找——你会看到一个名字类似你的项目名-版本号-jar-with-dependencies.jar的文件 - 最后运行这个Jar包:
java -jar target/你的Jar包全名.jar
为啥直接用javac会报错?
给你简单解释下:javac编译的时候,不知道你的Maven依赖存在哪里(这些依赖都在本地的Maven仓库里,比如~/.m2/repository或者C:\Users\你的用户名\.m2\repository),要手动把所有依赖的Jar都加到classpath里,不仅麻烦还容易漏,所以用Maven来帮你处理依赖路径才是最省心的方式~
内容的提问来源于stack exchange,提问作者kijux
相关产品推荐
相关产品推荐

