** Description changed:
- [Impact]
+ [Impact]
gradle cannot be run with openjdk-8 after the update to 4.4.1-5~18.04
(bionic-proposed) or 4.4.1-5~18.10 (cosmic-proposed).
When running it with openjdk-8 gradle fails with
$ gradle -g /tmp --debug --stacktrace --foreground
<snip>
- Caused by: java.lang.NoSuchMethodError:
+ Caused by: java.lang.NoSuchMethodError:
java.lang.invoke.MethodHandles.privateLookupIn(Ljava/lang/Class;Ljava/lang/invoke/MethodHandles$Lookup;)Ljava/lang/invoke/MethodHandles$Lookup;
<snip>
This is caused by the java11-compatibility patch in debian/patches,
which was a incomplete backport of the upstream changes [1]. Applying
the raw upstream change actually fixes the issue.
With the upstream fix applied another issue related to the ByteBuffer
shows up and can be fixed by updating the java8-compatibility patch to
include a cast in org.gradle.internal.hash.Hashing.update().
[Test Case]
All tests assume that bionic-proposed and cosmic-proposed are enabled.
NOTE: It is important to clear gradle files between runs as it can cache some
data that will prevent or hide some issues.
- $ rm -rf .gradle/ /tmp/native /tmp/daemon /tmp/caches/
-
+ $ rm -rf /tmp/native /tmp/daemon /tmp/caches/
+ the directories above are due to the usage of the "-g /tmp" flag.
Install gradle, openjdk-8, and openjdk-11.
$ apt install gradle openjdk-8-jdk openjdk-11-jdk default-jdk
By default gradle will use the default java (ie. java-11), check this:
$ gradle -version
<snip>
Groovy: 2.4.16
Ant: Apache Ant(TM) version 1.10.5 compiled on March 5 2019
JVM: 11.0.2 (Oracle Corporation 11.0.2+9-Ubuntu-3ubuntu118.04.1)
OS: Linux 4.19.0-13-generic amd64
Now run gradle with openjdk-11
$ gradle -g /tmp --debug --stacktrace --foreground
Use openjdk-8 by default
$ sudo update-java-alternatives -s java-1.8.0-openjdk-amd64
Check gradle version again
$ gradle -version
<snip>
Groovy: 2.4.16
Ant: Apache Ant(TM) version 1.10.5 compiled on March 5 2019
JVM: 1.8.0_191 (Oracle Corporation 25.191-b12)
OS: Linux 4.19.0-13-generic amd64
-
Clear gradle files
- $ rm -rf .gradle/ /tmp/native /tmp/daemon /tmp/caches/
+ $ rm -rf /tmp/native /tmp/daemon /tmp/caches/
$ gradle -g /tmp --debug --stacktrace --foreground
<snip>
- Caused by: java.lang.NoSuchMethodError:
+ Caused by: java.lang.NoSuchMethodError:
java.lang.invoke.MethodHandles.privateLookupIn(Ljava/lang/Class;Ljava/lang/invoke/MethodHandles$Lookup;)Ljava/lang/invoke/MethodHandles$Lookup;
<snip>
With the above fixed the following error is show and required a patch for
java8-compatibility
$ gradle -g /tmp --debug --stacktrace
<snip>
01:53:01.821 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]
java.lang.NoSuchMethodError: java.nio.ByteBuffer.clear()Ljava/nio/ByteBuffer;
01:53:01.822 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]
at
org.gradle.internal.hash.Hashing$MessageDigestHasher.update(Hashing.java:161)
<snip>
-
- [Regression Potential]
+ [Regression Potential]
The upstream fix actually enables openjdk-8 to be used again with gradle, no
other regressions are expected due to that patch.
The ByteBuffer to Buffer cast is also a known fix for openjdk-8
compatibility and no regressions is expected.
-
[Other Info]
References:
[1]
https://github.com/gradle/gradle/commit/028548460bd929fd034a552704798ad7f689493a
-
[Original bug report]
Just tried the proposed Gradle package on Ubuntu 18.04 LTS. As I cannot yet
use OpenJDK 11, I switched all Java alternatives back to OpenJDK 8 using
sudo update-java-alternatives -s java-1.8.0-openjdk-amd64
Now, when I try to build my project I get the above generic error. Full
console output:
$ gradle --no-daemon clean installDebug
To honour the JVM settings for this build a new JVM will be forked. Please
consider using the daemon:
https://docs.gradle.org/4.4.1/userguide/gradle_daemon.html.
FAILURE: Build failed with an exception.
* What went wrong:
Unable to start the daemon process.
This problem might be caused by incorrect configuration of the daemon.
For example, an unrecognized jvm option is used.
Please refer to the user guide chapter on the daemon at
https://docs.gradle.org/4.4.1/userguide/gradle_daemon.html
Please read the following process output to find out more:
-----------------------
FAILURE: Build failed with an exception.
* What went wrong:
java.lang.ExceptionInInitializerError (no error message)
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or
--debug option to get more log output. Run with --scan to get full insights.
* Get more help at https://help.gradle.org
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or
--debug option to get more log output. Run with --scan to get full insights.
* Get more help at https://help.gradle.org
ProblemType: Bug
DistroRelease: Ubuntu 18.04
Package: gradle 4.4.1-5~18.04
ProcVersionSignature: Ubuntu 4.18.0-16.17~18.04.1-generic 4.18.20
Uname: Linux 4.18.0-16-generic x86_64
ApportVersion: 2.20.9-0ubuntu7.5
Architecture: amd64
CurrentDesktop: ubuntu:GNOME
Date: Sat Mar 16 11:56:15 2019
EcryptfsInUse: Yes
InstallationDate: Installed on 2016-04-21 (1058 days ago)
InstallationMedia: Ubuntu 16.04 LTS "Xenial Xerus" - Release amd64
(20160420.1)
PackageArchitecture: all
SourcePackage: gradle
UpgradeStatus: Upgraded to bionic on 2018-04-26 (323 days ago)
--
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/1820389
Title:
Gradle on OpenJDK 8: java.lang.NoSuchMethodError:
java.lang.invoke.MethodHandles.privateLookupIn()
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/gradle/+bug/1820389/+subscriptions
--
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs