Hello,
I have a Jenkins 2.190.2 running.
I specified a custom JDK with “JAVA_HOME” set to `/opt/jdk8` which itself is a symbolic link to `/opt/oracle_jdk1.8.0_191`.
Some of my maven builds are now breaking due to the javadoc executable not being found:
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-javadoc-plugin:3.1.1:jar (default-cli) on project XXX: MavenReportException: Error while generating Javadoc: Unable to find Javadoc command: The Javadoc executable ‘/opt/oracle_jdk1.8.0_191/jre/bin/javadoc’ doesn’t exist or is not a file. Verify the <javadocExecutable/> parameter.
Of course `Javadoc` cannot be found when searching in $JAVA_HOME/jre.
Why is Jenkins referring to the jre subdirectory? When calling maven with the -X parameter I see that jenkins actually calls maven with `/opt/jdk8/bin/java`, but then sets the Java home to `/opt/oracle_jdk1.8.0_191/jre`:
[XXX] $ /opt/jdk8/bin/java -cp /home/Jenkins/plugins/maven-plugin/WEB-INF/lib/maven35-agent-1.13.jar:….
…
Java version: 1.8.0_191, vendor: Oracle Corporation, runtime: /opt/oracle_jdk1.8.0_191/jre
I know that I could forcibly set the `<javadocExecutable/>` parameter to `${java.home}../bin/javadoc`, but that would be wrong, since $JAVA_HOME is /opt/jdk8, not /opt/jdk8/jre and it would break the build for all other cases than Jenkins.
So how can I force Jenkins to use the correct $JAVA_HOME for building?
BR
Marco
--
You received this message because you are subscribed to the Google Groups "Jenkins Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to jenkinsci-use...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/jenkinsci-users/AM0PR10MB31079EBED16FBFD216C46DB2E0740%40AM0PR10MB3107.EURPRD10.PROD.OUTLOOK.COM.
Hello Mark,
in the Jenkins System Information page I see the
“java.home” set to “/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.191.b12-1.el7_6.x86_64/jre”
which is yet another JVM installation.
There is no additional “JAVA_HOME” environment variable.
I am not really sure what you mean by
“If you've defined a JDK tool (or an AdoptOpenJDK tool), is there a JAVA_HOME defined in the context of that JDK tool?
If you've defined a maven tool, is there a JAVA_HOME defined in the context of that maven tool?”
I have defined my JDKs in the Configuration of Helpers and specified the JAVA_HOME for each one:
There is no such settings for the maven installation and I am not able to specify one:
BR
Marco
To view this discussion on the web visit https://groups.google.com/d/msgid/jenkinsci-users/CAO49JtFDmRe-DZKHQx_iMjShD0rCszJhkw%2Byg6-g9_FsipVMqA%40mail.gmail.com.
Hello Mark,
in the Jenkins System Information page I see the
“java.home” set to “/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.191.b12-1.el7_6.x86_64/jre”
To view this discussion on the web visit https://groups.google.com/d/msgid/jenkinsci-users/AM0PR10MB310737BEBF5BB05465333DD3E0770%40AM0PR10MB3107.EURPRD10.PROD.OUTLOOK.COM.
Hello Mark,
yes, it is running on the master. We only have a master to don’t run any agents.
You write:
Fix the environment in the script that launches the Jenkins master so that it uses the JDK you want instead of the JRE it is actually using now. That may require that you change the value of PATH. It may require that you define JAVA_HOME. In either case, Jenkins in your environment needs to run with a JDK, not a JRE. It is currently running with a JRE.
As the system information displays a totally different `java.home` than the failing maven report, It don’t think that settings are related.
Anyway I tried setting and exporting the $JAVA_HOME directly in the Jenkins start script and in the global environment variables in Jenkins settings. `java.home` does change then, but still appends “jre”. But the actual $JAVA_HOME environment variable is also set and points to “/opt/jdk8” as I have set it.
However the problem persists. It is obviously respecting my JAVA_HOME, since it is using it for the maven build, but it insists on appending /jre.
How can I get rid of that?
That problem didn’t exist with Jenkins 1 as this build worked correctly in it.
To view this discussion on the web visit https://groups.google.com/d/msgid/jenkinsci-users/CAO49JtHipwxPd0LV38uQQaCqHMBfbGi_WARBGQwc%2B2u01oRkOw%40mail.gmail.com.
Hello Mark,
yes, it is running on the master. We only have a master to don’t run any agents.
You write:
Fix the environment in the script that launches the Jenkins master so that it uses the JDK you want instead of the JRE it is actually using now. That may require that you change the value of PATH. It may require that you define JAVA_HOME. In either case, Jenkins in your environment needs to run with a JDK, not a JRE. It is currently running with a JRE.
As the system information displays a totally different `java.home` than the failing maven report, It don’t think that settings are related.
Anyway I tried setting and exporting the $JAVA_HOME directly in the Jenkins start script and in the global environment variables in Jenkins settings. `java.home` does change then, but still appends “jre”. But the actual $JAVA_HOME environment variable is also set and points to “/opt/jdk8” as I have set it.
However the problem persists. It is obviously respecting my JAVA_HOME, since it is using it for the maven build, but it insists on appending /jre.
How can I get rid of that?
To view this discussion on the web visit https://groups.google.com/d/msgid/jenkinsci-users/AM0PR10MB31077DDA18913F10022739DFE0760%40AM0PR10MB3107.EURPRD10.PROD.OUTLOOK.COM.
That’s unfortunate.
But many thanks for your help.
To view this discussion on the web visit https://groups.google.com/d/msgid/jenkinsci-users/CAO49JtFFXZ6ttW77V-GQPqzZzdK9j60RAW4fK1mUXvAnJRJ1Xw%40mail.gmail.com.
Hello Björn,
no, the jdk installation is file. It does contain the jre subdirectory (`$JAVA_HOME/jre`).
The problem seems to be that Jenkins sets the `${java.home} system property to that jre subdirectory (`$JAVA_HOME/jre `) instead of the correct one (`$JAVA_HOME).
Then the maven-javadoc-plugin tries to find the `javadoc` executable under `${java.home}/bin` which fails, since `${java.home}` points to the wrong location.
See the error message:
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-javadoc-plugin:3.1.1:jar (default-cli) on project XXX: MavenReportException: Error while generating Javadoc: Unable to find Javadoc command: The Javadoc executable ‘/opt/oracle_jdk1.8.0_191/jre/bin/javadoc’ doesn’t exist or is not a file. Verify the <javadocExecutable/> parameter.
BR
Marco
Von: 'Björn Pedersen' via Jenkins Users <jenkins...@googlegroups.com>
Gesendet: Donnerstag, 14. November 2019 09:12
An: Jenkins Users <jenkins...@googlegroups.com>
Betreff: Re: How to force jenkins to use $JAVA_HOME/ instead of $JAVA_HOME/jre?
Hi,
Maybe this be a stripped down/incomplete jdk install. If looking into one of my jdk installs(manual install with oracle installer), there is a jre subdirectory present.
Björn
--
You received this message because you are subscribed to the Google Groups "Jenkins Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to
jenkinsci-use...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/jenkinsci-users/ca918127-f740-4463-b130-55686f6205e3%40googlegroups.com.