首页 > 其他分享 >No compiler is provided in this environment. Perhaps you are running on a JRE rather than JDK 解决

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

时间:2024-08-05 11:16:57浏览次数:16  
标签:provided JRE Java JDK 311 maven 3.8 compiler

1. 问题描述

使用idea对Java工程执行mvn compile命令进行编译,出现以下报错:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.5:compile (default-compile) on project test: Compilation failure
[ERROR] No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?

2. 问题分析

从报错信息上看,是由于环境没有提供编译器,可能编译过程运行在JRE上,而不是JDK上。

查看了idea项目配置的Java编译器为JDK8,且配置的Java路径正确。

执行命令mvn -v,查看maven的配置。发现runtime:的路径有些奇怪。

Apache Maven 3.8.3 (ff8e977a158738155dc465c6a97ffaf31982d739)
Maven home: /usr/local/apache-maven-3.8.3
Java version: 1.8.0_311, vendor: Oracle Corporation, runtime: /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home
Default locale: zh_CN, platform encoding: UTF-8
OS name: "mac os x", version: "10.16", arch: "x86_64", family: "mac"

3. 解决方案

从网上搜索了解决方案,发现这篇文件介绍的比较靠谱。

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

采用了文章中的方法3,重新设置JAVA_HOME路径

  • 添加Java环境变量
# cat ~/.bash_profile
export M2_HOME=/usr/local/apache-maven-3.8.3
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_311.jdk/Contents/Home
export PATH=$PATH:$M2_HOME/bin:$JAVA_HOME/bin
  • 使环境变量生效
source ~/.bash_profile
  • 查看maven配置
# mvn -v
Apache Maven 3.8.3 (ff8e977a158738155dc465c6a97ffaf31982d739)
Maven home: /usr/local/apache-maven-3.8.3
Java version: 1.8.0_311, vendor: Oracle Corporation, runtime: /Library/Java/JavaVirtualMachines/jdk1.8.0_311.jdk/Contents/Home/jre
Default locale: zh_CN, platform encoding: UTF-8
OS name: "mac os x", version: "10.16", arch: "x86_64", family: "mac"

发现maven的runtime:已经显示jdk1.8.0_311.jdk,运行环境已经正常。

此时再次执行编译命令mvn compile,发现Java工程可以正常编译,不在出现报错。

标签:provided,JRE,Java,JDK,311,maven,3.8,compiler
From: https://www.cnblogs.com/wxmdevelop/p/18342861

相关文章

  • JDK的安装配置
    JDK(JavaDevelopmentKit)的安装配置涉及下载、安装和配置环境变量等步骤。以下是针对Windows、macOS和Linux操作系统的详细安装配置指南:JDK的安装配置下载JDK访问Oracle官网或其他可靠的JDK下载源,如OracleJDK下载页面(注意:链接可能随时间变化,请以实际为准)。选择适合您操作......
  • Ubuntu安装jdk17
    1、下载下载地址:wgethttps://download.oracle.com/java/17/latest/jdk-17_linux-x64_bin.tar.gz也可以手动下载传输上去 2、解压tar-zxvf jdk-17_linux-x64_bin.tar.gz 3、修改环境变量exportJAVA_HOME=/home/dingchong/tools/jdk-17.0.12exportCLASSPATH=.:$J......
  • JDK、JRE和JVM简述
    JDK(JavaDevelopmentKit)JDK是Java开发环境的核心组件,包括:Java编译器、JRE(Java运行环境)JavaDoc文档生成器和其他一些工具。JDK是Java程序员开发Java应用程序所必需的软件包。JRE(JavaRuntimeEnvironment)也称为Java运行环境,它是Java应用程序运行的基础。它包含JVM和必要的Java......
  • JDK的安装与配置
    JDK的安装与配置安装JDK1)点击JDK官方下载地址下载1.8版本的JDK即可。2)点击download后,根据电脑操作系统和位数选择对用的包。Windows的选Windows,电脑为64位的选x64,32位选x86。点击右面下载。下载记得点击AcceptLicenseAgreement,不然下载不了。上面的为JDKbao,下面为JDK......
  • JDK,JRE与JVM
    JDK,JRE与JVMJDK定义:JDK,全称JavaDevelopmentKit,(又称为JavaSDK,JavaSoftwareDevelopmentKit),是Java语言的软件开发工具包。其中,JDK中包含JRE(JavaRuntimeEnvironment)和Java开发工具包,JRE又包含jvm虚拟机和Java运行所需的核心类库。根目录下有个bin文件夹,这里面放的......
  • JDK JRE和JVM
    JDK、JRE和JVM是Java技术栈中的三个核心组件,它们各自扮演着不同的角色,共同构成了Java程序的开发、运行和跨平台能力。以下是对这三个组件的详细解释以及它们之间关系的说明:1.JVM(JavaVirtualMachine)定义:JVM是JavaVirtualMachine的缩写,即Java虚拟机。它是Java程序的运行环境,......
  • JDK的安装与配置
    JDK的安装与配置目录JDK的安装与配置1.下载JDK:2.安装JDK:3.配置环境变量:4.验证安装和配置:5.注意事项:1.下载JDK:你可以从Oracle官网下载所需的JDK版本。例如,JDK8可以从以下链接下载:JavaArchive|Oracle。确保选择适合你操作系统的版本2。我们可以选择JavaSE8选择适合电......
  • 信步漫谈之JDK——环境变量配置
    Windows上配置JDK环境变量安装jdk(以jdk1.6.0_45为例)计算机→属性→高级系统设置→高级→环境变量新建JAVA_HOME变量:C:\ProgramFiles(x86)\Java\jdk1.6.0_45编辑Path变量,末尾添加:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;新建CLASSPATH变量:.;%JAVA_HOME%\lib;%JAVA_......
  • win11配置两个jdk版本
    安装jdkjdk8下载地址https://www.oracle.com/java/technologies/downloads/?er=221886#java8清华大学镜像站https://mirrors.tuna.tsinghua.edu.cn/Adoptium/8/解压到目录下D:\soft\java\(不唯一)配置步骤win输入env打开环境变量添加第一个系统变量CLASSPATH(前面有个.).;%......
  • JDK和CGLIB动态代理
    一篇写的很好的解释动态代理原理的文章:博客原地址:https://www.cnblogs.com/lifullmoon/p/14654836.html代理代理:在不改变原始代码的情况下修改对象的行为。代理可以以透明的方式为对象添加额外的功能。言简意赅:方法增强分类静态代理人为编写,编译时就存在静态代理就是通过......