Question about JDK and Maven through Jenkins

1,836 views
Skip to first unread message

Fábio Cabrita

unread,
Feb 14, 2018, 1:42:01 PM2/14/18
to Jenkins Users
Hello,

Its my first time using jenkins and I am still learning how it works, so if you see some unnecessary info dont be mad lol.

I am using a CentOS 7, and I have installed JAVA(openjdk version "1.8.0_161") and MAVEN(Apache Maven 3.5.2).

Now, I have imported the repo from this tutorial(https://www.youtube.com/watch?v=s73nhwYBtzE), to my new account at bitbucket.

As plugins I have install several that to me was looking necessary for that tutorial: https://pastebin.com/zU19r8PV

Then I created a new Pipeline at Jenkins with the right login for my bitbucket repo git.

Then tried to 'Build Now' but it fails at Compile Stage:

[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ jenkins-example ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 1 source file to /var/lib/jenkins/workspace/jenkins-example/target/classes
[INFO] -------------------------------------------------------------
[ERROR] 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
[INFO] 1 error
[INFO] -------------------------------------------------------------
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.767 s
[INFO] Finished at: 2018-02-13T16:45:06Z
[INFO] Final Memory: 9M/102M
[INFO] ------------------------------------------------------------------------
[INFO] [jenkins-event-spy] Generated /var/lib/jenkins/workspace/jenkins-example@tmp/withMavenabb6bf9d/maven-spy-20180213-164505-820349381958923572055.log
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project jenkins-example: Compilation failure
[ERROR] No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?
[ERROR] -> [Help 1]
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:

Now a side of having JAVA and MAVIN installed in CentOS, I was trying to use JDK from java.sun.com(with an account from Oracle) and Maven from Apache through Jenkins webservice in Global Tool Configuration but still I have the same output errors.

Also at Maven I add the name of maven_3_5_2 and change it in jenkinsfile in that repo that I have cloned to my account.

This is a noob question, but I need some guidence here =|

Thanks!
Message has been deleted

Fábio Cabrita

unread,
Feb 16, 2018, 10:36:55 AM2/16/18
to Jenkins Users
Using mvn -X to get an extented debug I got:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project jenkins-example: Compilation failure

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

[ERROR] -> [Help 1]

org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project jenkins-example: Compilation failure

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

Victor Martinez

unread,
Feb 16, 2018, 10:42:51 AM2/16/18
to Jenkins Users
if you run mvn -V -v . then you will see what's the java version and some other mvn environmental details which are used within maven, most likely it's not using the JDK but the JRE for some reason, please review how that particular JDK setup was made. 

Cheers

Cyrille Le Clerc

unread,
Feb 16, 2018, 11:17:53 AM2/16/18
to jenkins...@googlegroups.com
Please try "which java && which javac" doing an ssh on this build agent.

I suspect that "javac" is missing and that would explain "No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?"



--
You received this message because you are subscribed to a topic in the Google Groups "Jenkins Users" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/jenkinsci-users/PDdb0_8Lq7Q/unsubscribe.
To unsubscribe from this group and all its topics, send an email to jenkinsci-users+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/jenkinsci-users/b66813b4-7f34-4225-b7ba-b1ce461de3ee%40googlegroups.com.

For more options, visit https://groups.google.com/d/optout.



--

Cyrille Le Clerc
Director of Product Management CloudBees, Inc.

CloudBees-Logo.png


M: +33-6.61.33.69.86
E: clec...@cloudbees.com

Skype: cyrille.leclerc



Fábio Cabrita

unread,
Feb 19, 2018, 5:29:09 AM2/19/18
to Jenkins Users
Here are both command paths:

root@jenkins-server /h/jenkins> which java
/bin/java
root@jenkins
-server /h/jenkins> which javac
/bin/javac

While checking mvn, I notice that Java home is set to JRE instead of JDK:


[jenkins@jenkins-server ~]$ mvn --version
Apache Maven 3.5.2 (138edd61fd100ec658bfa2d307c43b76940a5d7d; 2017-10-18T08:58:13+01:00)
Maven home: /usr/local/maven
Java version: 1.8.0_161, vendor: Oracle Corporation
Java home: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.161-0.b14.el7_4.x86_64/jre
Default locale: en_US, platform encoding: UTF-8
OS name
: "linux", version: "3.10.0-693.17.1.el7.x86_64", arch: "amd64", family: "unix"

Checking Java version:

[jenkins@jenkins-server ~]$ java -version
openjdk version
"1.8.0_161"
OpenJDK Runtime Environment (build 1.8.0_161-b14)
OpenJDK 64-Bit Server VM (build 25.161-b14, mixed mode)

In this system I have several Java's versions installed in this system:

[root@jenkins-server ~]# sudo update-alternatives --config java

There are 2 programs which provide 'java'.

 
Selection    Command
-----------------------------------------------
*+ 1           java-1.8.0-openjdk.x86_64 (/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.161-0.b14.el7_4.x86_64/jre/bin/java)
   
2           java-1.7.0-openjdk.x86_64 (/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.161-2.6.12.0.el7_4.x86_64/jre/bin/java)

[root@jenkins-server ~]# sudo update-alternatives --config javac

There is 1 program that provides 'javac'.

Selection Command
-----------------------------------------------
*+ 1 java-1.7.0-openjdk.x86_64 (/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.161-2.6.12.0.el7_4.x86_64/bin/javac)

But dont know how to set mavens to use java JDK.

Cyrille Le Clerc

unread,
Feb 19, 2018, 8:54:39 AM2/19/18
to Jenkins Users
Can you install "java-1.8.0-openjdk-devel" on your server so that javac-1.8 is also installed?

I suspect that Jenkins and Maven get tricked by the fact that your default "java" installation doesn't have a "javac" compiler.

If you cannot install "java-1.8.0-openjdk-devel", I strongly recommend to rely on Jenkins' capability to install a JDK:
  • In Jenkins UI, with Jenkins administrator privileges, navigate to "Manage Jenkins / Global Tools Installer"
  • In the "JDK" section, click on "JDK Installations..." then "Add JDK"
    • Choose the name "1.8"
    • Select a JDK 8 version (e.g. "Java SE Development Kit 8u162")
    • Enter oracle.com credentials 
  • Update your pipeline script and add "jdk: '1.8' "to your "withMaven"() step: "withMaven(jdk: 1.8', ...){...}"
Cyrille

Fábio Cabrita

unread,
Feb 19, 2018, 9:16:33 AM2/19/18
to Jenkins Users
Thats the strange part because I have javac installed in this system.

Now I have added a new field for jdk in jenkinsfile(as well as in Global Tools Installer) and its working:

    tools {
        jdk
'java_9'
    }

Thanks for the help Cyrille Le Clerc!

santosh salunke

unread,
May 14, 2018, 11:58:21 PM5/14/18
to Jenkins Users
Thanks :) 

suny nazar

unread,
Jul 29, 2018, 5:25:49 PM7/29/18
to Jenkins Users
this really was helpful and works.

Cyrille Le Clerc

unread,
Jul 30, 2018, 5:54:36 AM7/30/18
to Jenkins Users
Thanks for the kind words Suny!

Itamar Tafarello

unread,
May 10, 2019, 2:17:42 PM5/10/19
to Jenkins Users
It worked for me.
First step I setup the Java settings adding the location of the java binary


Then I changed the jenkinsfile adding the JDK option

pipeline {
     agent any
     tools {
          maven 'Default'
          jdk 'Default'
     }

     :
Reply all
Reply to author
Forward
0 new messages