Maven error :Perhaps you are running on a JRE rather than a JDK?
Asked Answered
C

25

85

I've never worked with Maven before and I am following the instructions here. When I run the command

mvn integration-test -Pamp-to-war

It initially downloaded a whole bunch of dependencies, and in the end it showed,

COMPILATION ERROR : 
[INFO] -------------------------------------------------------------
[ERROR] No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?
[INFO] 1 error

I am on ubuntu 13.04.

If there's anything you want me to tell you, let me know. Thanks.

EDIT

When I do echo $JAVA_HOME I get /usr/lib/jvm/java-7-openjdk-i386/

When I do mvn -version

I get,

Apache Maven 3.0.4
Maven home: /usr/share/maven
Java version: 1.7.0_25, vendor: Oracle Corporation
Java home: /usr/lib/jvm/java-7-openjdk-i386/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.8.0-26-generic", arch: "i386", family: "unix"

Also, I found out this problem faced by someone else. But I am not sure how to go about the solution that is specified?

Further edits.

kraken@kraken-Inspiron-1545:/usr/lib/jvm/java-7-openjdk-i386$ ls -l
total 12
drwxr-xr-x 2 root root 4096 Sep  9 10:44 bin
lrwxrwxrwx 1 root root   41 Jul  4  2013 docs -> ../../../share/doc/openjdk-7-jre-    headless
drwxr-xr-x 5 root root 4096 Oct 13  2013 jre
drwxr-xr-x 4 root root 4096 Oct 13  2013 man
Conditioned answered 11/10, 2014 at 10:59 Comment(9)
Do you have JRE instead of JDK installed?Gulick
I have jdk. When I do echo $JAVA_HOME it outputs, /usr/lib/jvm/java-7-openjdk-i386/Conditioned
Java home: /usr/lib/jvm/java-7-openjdk-i386/jre ends with jre, starts with jdk, hmm :PGulick
If you do which javac, what do you get?Gulick
@Gulick I've attached a link to the question, that details it. But I am not sure what is the solution that is prescribed there.Conditioned
@Gulick /usr/bin/javacConditioned
possible duplicate of Maven Package Compilation ErrorSanyu
Does this answer your question? No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?Durkee
@estellezg The question you link focusses on a problem with Maven within Eclipse, this question is different.Prefatory
C
46

Apparently, it requires tools.jar file inside the lib folder of my $JAVA_HOME. I did not have the lib folder, so I reinstalled my jdk using command

apt-get install openjdk-7-jdk openjdk-7-doc openjdk-7-jre-lib

Also, this link may help some people.

Conditioned answered 11/10, 2014 at 19:14 Comment(0)
R
182

I've been facing the same issue with java 8 (ubuntu 16.04), trying to compile using mvn command line.

I verified my $JAVA_HOME, java -version and mvn -version. Everything seems to be okay pointing to /usr/lib/jvm/java-8-openjdk-amd64.

It appears that java-8-openjdk-amd64 is not completly installed by default and only contains the JRE (despite its name "jdk").

Re-installing the JDK did the trick.

sudo apt-get install openjdk-8-jdk

Then some new files and new folders are added to /usr/lib/jvm/java-8-openjdk-amd64 and mvn is able to compile again.

Rue answered 16/11, 2016 at 20:59 Comment(3)
I guess this is essentially the same thing as the accepted answer - not having JDK you wouldn't have tools.jar either.Pastrami
Running javac -version should be able to confirm this because it isn't included in the JDK.Navarre
@LittleHelper javac -version results in bash: javac: command not foundPlanish
C
46

Apparently, it requires tools.jar file inside the lib folder of my $JAVA_HOME. I did not have the lib folder, so I reinstalled my jdk using command

apt-get install openjdk-7-jdk openjdk-7-doc openjdk-7-jre-lib

Also, this link may help some people.

Conditioned answered 11/10, 2014 at 19:14 Comment(0)
P
24

This is because of running jre rather than jdk, to install jdk follow below steps

Installing java 8 in amazon linux/redhat

--> yum search java | grep openjdk

--> yum install java-1.8.0-openjdk-headless.x86_64

--> yum install java-1.8.0-openjdk-devel.x86_64

--> update-alternatives --config java #pick java 1.8 and press 1

--> update-alternatives --config javac #pick java 1.8 and press 2

Thank You

Pattison answered 3/8, 2018 at 9:14 Comment(2)
Yeah, Only JRE was installed in my case as well. We have to install JDK as well.Bedcover
On RHEL 7.5 I installed java-1.8.0-openjdk, but this does not include the JAVAC compiler, so based on your information I additionally installed java-1.8.0-openjdk-devel.x86_64 and now I have the JAVAC compiler. If it is a JRE it should be labeled as such. This is utter nonsense. java-1.8.0-openjdk is not a JDK. Should be called java-1.8.0-openjdk-jreLanceolate
M
11

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

Solution

Please set the Environment variable like below to solve the issue

Variable name : JAVA_HOME

Variable Value : C:\Program Files\Java\jdk1.8.0_202

Variable name : M2_HOME

Variable Value : C:\Program Files\apache-maven-3.6.0

Moreover, Add Java and maven path in "System Variables" like below:

  1. C:\Program Files\Java\jdk1.8.0_202\bin
  2. C:\Program Files\apache-maven-3.6.0\bin
Monocyclic answered 10/4, 2019 at 21:19 Comment(0)
T
7

For me, it worked like following. Please look at JAVA_HOME environment variable, whether it is pointing to JRE or JDK.? If it pointed to JRE, you will face "Perhaps you are running on a JRE rather than a JDK" issue. if so change the path to JDK.

Modifying like this, it worked for me.

JAVA_HOME C:\Program Files\Java\jdk1.8.0_31

Trotyl answered 21/2, 2017 at 7:0 Comment(0)
P
7

I get this error when JAVA_HOME is not properly set.

I have tried this command

$ /usr/libexec/java_home -V

which gives 3 virtual machines

Matching Java Virtual Machines (3):
1.8.291.10 (x86_64) "Oracle Corporation" - "Java" /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home
1.8.0_291 (x86_64) "Oracle Corporation" - "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_291.jdk/Contents/Home
1.8.0_181 (x86_64) "Oracle Corporation" - "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home

In such case, specific version is required.

This

$ /usr/libexec/java_home -v1.8
/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home

differs from

$ /usr/libexec/java_home -v1.8.0
/Library/Java/JavaVirtualMachines/jdk1.8.0_291.jdk/Contents/Home

Therefore solution is to set ~/.bash_profile with

export JAVA_HOME=`/usr/libexec/java_home -v 1.8.0`
Pogey answered 8/7, 2021 at 6:17 Comment(0)
S
5

Add this configurations in pom.xml

<project ...>
    ...
    <build>
        ...
        <plugins>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.1</version>
                <configuration>
                    <source>1.7</source>
                    <target>1.7</target>
                    <fork>true</fork>
                    <executable>C:\Program Files\Java\jdk1.7.0_79\bin\javac</executable>
                </configuration>
            </plugin>
        </plugins>
    </build>
    ...
</project>
Sociopath answered 20/5, 2017 at 8:13 Comment(0)
L
5

Just adding more details on where to setup. Main reason would be the JAVA_HOME setup in the environment variable should be pointing to correct JDK location.

  1. Check System -> Advance System Settings
  2. Click on Environment variable
  3. Add variable JAVA_HOME -> "C:\Program Files\Java\jdk1.8.0_141;"
  4. Edit "path" -> append %JAVA_HOME%; to the existing text.
Lifesaving answered 20/11, 2017 at 10:13 Comment(0)
K
5

i am using centos and getting same error when run mvn command with goal, install. After some googling i have found the solution to run following command.

sudo yum install java-1.8.0-openjdk-devel

Ketonuria answered 11/4, 2019 at 11:12 Comment(0)
T
3

Check if /usr/bin has 'javac'. If not you have installed JRE & have to install jdk dev version like "java-1.8.0-openjdk-devel.x86_64"

Tiphani answered 17/8, 2017 at 21:7 Comment(0)
F
2

I was facing the same issue. I needed to place the JDK before the JRE in PATH in order to resolve.

Felipa answered 26/3, 2019 at 13:56 Comment(0)
E
2

Here's my automatic solution...

This will follow your javac executable's symlink (setup by yum and/or alternatives --config java) backwards to find the JAVA_HOME. (Toss this in your in your /etc/profile):

export JAVA_HOME=$(readlink -f /usr/bin/javac | sed 's:/bin/javac$::')

If you wanted a stable path (refreshed on boot) launch something like this:

export JAVA_HOME=$(readlink -f /usr/bin/javac | sed 's:/bin/javac$::')
ln -sfn "${JAVA_HOME}" /usr/lib/jvm/jdk-current

I'm kinda shocked the latter still isn't baked into alternatives.

Eyla answered 21/11, 2019 at 1:11 Comment(0)
P
1

This is how i fixed my problem

right clik on the project > properties > Java Compiler (select the one you are using)

it was 1.5 for me but i have 1.8 installed. so i changed it to 1.8.. and voilla it worked!.

Paramatta answered 16/7, 2015 at 12:41 Comment(0)
P
1

I had the same issue after installing the java-1.8.0-openjdk package on an AWS Linux AMI. The incorrect assumption I made, was that because the file ended in openjdk it would be the jdk version. This is not the case.

The openjdk install page explains everything clearly.

The java-1.8.0-openjdk package contains just the Java Runtime Environment. If you want to develop Java programs then install the java-1.8.0-openjdk-devel package.

If you've already installed the java-1.8.0-openjdk package, just leave it and the JAVA_HOME value if it's working for the JRE and install the java-1.8.0-openjdk-devel package using yum install java-1.8.0-openjdk-devel -y.

Power answered 5/1, 2018 at 5:25 Comment(0)
E
1

In Installed JREs path see if there is an entry pointing to your JDK path or not. If not, click on Edit button and put the path you configured your JAVA_HOME environment:

Eclipse Path: Window → Preferences → Java → Installed JREs
Emotional answered 24/7, 2020 at 15:55 Comment(0)
T
1

Solution for Mac users who recently updated to MacOS Monterey

If you've encountered this issue after updating your macOS to Monterey recently, try running this command:

sudo rm -fr /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin

Afterwards, continue using maven like usual. Hope this helped :)

Textualist answered 1/3, 2022 at 18:1 Comment(0)
H
0

I had the same error and I was missing the User variable: JAVA_HOME and the value for the SDK - "C:\Program Files\Java\jdk-9.0.1" in my case

Hotpress answered 29/10, 2017 at 9:28 Comment(0)
S
0

I faced the issue even though JAVA_HOME was pointing to JDK. It took time to figure out why it was throwing the exception.

The issue was I set JAVA_HOME as admin user on my window machine. You need to add JAVA_HOME environment variable pointing to right JDK to your user profile environment variable settings.

Squamulose answered 5/7, 2018 at 5:2 Comment(0)
S
0

For solving my issue on Linux don't have a JDK, I just download the JDK and upload to the Linux server, and type: tar xvf jdk-8u45-linux-x64.tar.gz

Serica answered 3/9, 2018 at 3:28 Comment(0)
E
0

I was facing the same issue in eclipse maven project, all i did was
right click on the project
maven --> update project
or just press ALT+ F5

Elgar answered 29/5, 2019 at 7:41 Comment(0)
C
0

If the above solutions doesn't work then try to place java path before maven in path of environment variable. It worked for me.

%JAVA_HOME%\bin

C:\Program Files\apache-maven-3.6.1-bin\apache-maven-3.6.1\bin

Carlos answered 10/9, 2019 at 4:25 Comment(0)
W
0

I was getting below error in Maven project in Eclipse

Error: [ERROR] No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?

I solved it by following the below solution

Solution: Eclipse->Project->Right click->Build Path->Configure Build Path->Add jdk path(Eg: C:\Program Files\Java\jdk1.8.0_45)

Note: Earlier Build path in eclipse project was pointing to jre path

And also add jdk path in Environment Variable in Advanced system settings

Variable Name: JAVA_HOME

Variable Value: C:\Program Files\Java\jdk1.8.0_45

And also make sure in eclipse below pointing is (jdk path-> C:\Program Files\Java\jdk1.8.0_45 )

Windows -> Preferneces -> Java -> Installed JRE's

Woodson answered 18/3, 2021 at 14:36 Comment(0)
P
-1

Right click on your project folder (Maven one), select properties and from the properties window, again select Java Compiler and see what is selected against compiler compliance level and make sure that it is the same version as your jre. In my case I had 1.8 but 1.5 was selected against compiler compliance level. After selecting 1.8 the build was successful without this error.

Pending answered 27/4, 2017 at 20:1 Comment(0)
F
-1

too many java virtual machines?

place check with command:

/usr/libexec/java_home -V
java -version
mvn -version

uninstall java click here

Fang answered 3/7, 2021 at 4:41 Comment(0)
S
-1

I tried all above solutions. However I had to reboot the windows to make settings take effects

Sitarski answered 4/1 at 18:36 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.