maven项目用eclipse打包发布的问题(No compiler is provided in this environment!)

本文介绍了在使用Eclipse和Maven进行项目打包时遇到的'No compiler is provided in this environment!'错误。问题源于编译导出配置未正确设置,解决方案是进入Build Path设置,确保JRE和Maven依赖已勾选,从而成功执行maven install。

一、问题
如果用到maven来管理项目,eclipse的‘maven install’就可以自动编译并打包一个可执行的jar,然后可以直接发布一个版本。
但初次用这个方法打包的时候发现,会出现一个错误:

No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK

二、分析与解决
初步分析是缺少JRE,怎么会缺少jre呢?明明用eclipse来run项目的时候是可以正常跑起来的。后来上网找了一下资料,才发觉是编译导出配置没有把jre和maven依赖给勾选上:
这里写图片描述
具体操作为 Build Path–>Configure Build Path..–>Order And Export,把JRE以及Maven依赖给勾选上,重新maven install一下,大功告成!

[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 4.618 s
[INFO] Finished at: 2018-06-03T16:13:54+08:00
[INFO] Final Memory: 27M/362M
[INFO] ------------------------------------------------------------------------
### 问题分析 在Maven项目中遇到的编译错误 `Compilation failure: No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?` 是由于当前运行环境使用的是Java运行时环境(JRE),而不是完整的Java开发工具包(JDK)。JRE不包含编译器,因此无法完成项目的编译过程[^1]。 ### 解决方案 以下是解决该问题的具体方法: #### 1. 确认系统中已安装JDK 确保系统中已经正确安装了JDK。可以通过以下命令检查: ```bash java -version javac -version ``` 如果只显示 `java -version` 的结果而没有 `javac -version`,则表明当前环境仅配置了JRE,而非JDK[^4]。 #### 2. 配置正确的JAVA_HOME环境变量 将系统的 `JAVA_HOME` 环境变量指向JDK的安装路径,而不是JRE的路径。例如,在Windows系统中,可以设置为: ```plaintext C:\Program Files\Java\jdk-<version> ``` 在Linux或Mac系统中,可以设置为: ```bash export JAVA_HOME=/usr/lib/jvm/java-<version>-openjdk export PATH=$JAVA_HOME/bin:$PATH ``` 完成后,重启终端以使更改生效[^3]。 #### 3. 验证Maven使用的Java版本 即使系统中配置了JDK,Maven可能仍然使用默认的JRE。可以通过以下命令验证Maven使用的Java版本: ```bash mvn -v ``` 输出应显示类似以下内容: ```plaintext Apache Maven 3.x.x Maven home: ... Java version: <JDK version>, vendor: ... Java home: <JDK installation path> ``` 如果显示的是JRE路径,则需要重新配置Maven的环境变量。 #### 4. 修改IDE配置(如EclipseIntelliJ IDEA) 如果使用的是IDE(例如EclipseIntelliJ IDEA),需要确保IDE中的Java编译器配置为JDK,而不是JRE。 - **Eclipse**: - 转到 `Window -> Preferences -> Java -> Installed JREs`。 - 确保选择了JDK,并将其设为默认值[^3]。 - **IntelliJ IDEA**: - 转到 `File -> Project Structure -> SDKs`。 - 添加并选择JDK作为项目SDK[^4]。 #### 5. 强制指定JDK路径 如果上述方法无效,可以在Maven命令中显式指定JDK路径: ```bash JAVA_HOME=<path_to_jdk> mvn clean install ``` 例如: ```bash JAVA_HOME=/usr/lib/jvm/java-11-openjdk mvn clean install ``` ### 示例代码 以下是一个简单的Maven项目POM文件片段,确保其配置正确: ```xml <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.1</version> <configuration> <source>11</source> <target>11</target> </configuration> </plugin> </plugins> </build> ``` 此配置确保Maven使用正确的Java版本进行编译[^2]。 ### 注意事项 - 如果系统中同时安装了多个JDK版本,请确保所有环境变量和IDE配置均指向所需的JDK版本。 - 某些情况下,即使配置了JDK,仍可能出现缓存问题。尝试清理Maven本地仓库并重新构建项目: ```bash mvn clean install -U ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值