Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[workspace-image] Update Gradle #69

Closed
svenefftinge opened this issue Sep 10, 2018 · 9 comments
Closed

[workspace-image] Update Gradle #69

svenefftinge opened this issue Sep 10, 2018 · 9 comments
Assignees

Comments

@svenefftinge
Copy link
Member

We should update the installed gradle to the latest released version.

@rdmueller
Copy link

I just tried to work with the currently installed gradle version (4.4.1) but don't succeed.
I can run a

gradle --version

but even a simple

gradle tasks

produces an error which I can't handle:

Picked up JAVA_TOOL_OPTIONS: -Xmx3189m
Starting a Gradle Daemon (subsequent builds will be faster)

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:
-----------------------
Picked up JAVA_TOOL_OPTIONS: -Xmx3189m

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

@meysholdt
Copy link
Member

when I run gradle --no-daemon --stacktrace I get

Picked up JAVA_TOOL_OPTIONS: -Xmx3189m

FAILURE: Build failed with an exception.

* What went wrong:
java.lang.ExceptionInInitializerError (no error message)

* Try:
Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Exception is:
java.lang.ExceptionInInitializerError
        at org.gradle.internal.classloader.FilteringClassLoader.<clinit>(FilteringClassLoader.java:48)
        at org.gradle.initialization.DefaultClassLoaderRegistry.restrictTo(DefaultClassLoaderRegistry.java:40)
        at org.gradle.initialization.DefaultClassLoaderRegistry.restrictToGradleApi(DefaultClassLoaderRegistry.java:36)
        at org.gradle.initialization.DefaultClassLoaderRegistry.<init>(DefaultClassLoaderRegistry.java:30)
        at org.gradle.internal.service.scopes.GlobalScopeServices.createClassLoaderRegistry(GlobalScopeServices.java:207)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:73)
        at org.gradle.internal.service.ReflectionBasedServiceMethod.invoke(ReflectionBasedServiceMethod.java:35)
        at org.gradle.internal.service.DefaultServiceRegistry$FactoryMethodService.invokeMethod(DefaultServiceRegistry.java:795)
        at org.gradle.internal.service.DefaultServiceRegistry$FactoryService.create(DefaultServiceRegistry.java:748)
        at org.gradle.internal.service.DefaultServiceRegistry$ManagedObjectProvider.getInstance(DefaultServiceRegistry.java:574)
        at org.gradle.internal.service.DefaultServiceRegistry$SingletonService.get(DefaultServiceRegistry.java:623)
        at org.gradle.internal.service.DefaultServiceRegistry.applyConfigureMethod(DefaultServiceRegistry.java:199)
        at org.gradle.internal.service.DefaultServiceRegistry.findProviderMethods(DefaultServiceRegistry.java:180)
        at org.gradle.internal.service.DefaultServiceRegistry.addProvider(DefaultServiceRegistry.java:255)
        at org.gradle.internal.service.ServiceRegistryBuilder.build(ServiceRegistryBuilder.java:52)
        at org.gradle.launcher.cli.BuildActionsFactory.runBuildInProcess(BuildActionsFactory.java:129)
        at org.gradle.launcher.cli.BuildActionsFactory.createAction(BuildActionsFactory.java:90)
        at org.gradle.launcher.cli.CommandLineActionFactory$ParseAndBuildAction.createAction(CommandLineActionFactory.java:296)
        at org.gradle.launcher.cli.CommandLineActionFactory$ParseAndBuildAction.execute(CommandLineActionFactory.java:286)
        at org.gradle.launcher.cli.CommandLineActionFactory$ParseAndBuildAction.execute(CommandLineActionFactory.java:264)
        at org.gradle.launcher.cli.JavaRuntimeValidationAction.execute(JavaRuntimeValidationAction.java:33)
        at org.gradle.launcher.cli.JavaRuntimeValidationAction.execute(JavaRuntimeValidationAction.java:24)
        at org.gradle.launcher.cli.ExceptionReportingAction.execute(ExceptionReportingAction.java:33)
        at org.gradle.launcher.cli.ExceptionReportingAction.execute(ExceptionReportingAction.java:22)
        at org.gradle.launcher.cli.CommandLineActionFactory$WithLogging.execute(CommandLineActionFactory.java:257)
        at org.gradle.launcher.cli.CommandLineActionFactory$WithLogging.execute(CommandLineActionFactory.java:191)
        at org.gradle.launcher.Main.doAction(Main.java:33)
        at org.gradle.launcher.bootstrap.EntryPoint.run(EntryPoint.java:45)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.gradle.launcher.bootstrap.ProcessBootstrap.runNoExit(ProcessBootstrap.java:60)
        at org.gradle.launcher.bootstrap.ProcessBootstrap.run(ProcessBootstrap.java:37)
        at org.gradle.launcher.GradleMain.main(GradleMain.java:23)
Caused by: java.lang.RuntimeException: java.lang.NoSuchMethodError: java.lang.invoke.MethodHandles.privateLookupIn(Ljava/lang/Class;Ljava/lang/invoke/MethodHandles$Lookup;)Ljava/lang/invoke/MethodHandles$Lookup;
        at org.gradle.internal.classloader.ClassLoaderUtils.<clinit>(ClassLoaderUtils.java:46)
        ... 39 more
Caused by: java.lang.NoSuchMethodError: java.lang.invoke.MethodHandles.privateLookupIn(Ljava/lang/Class;Ljava/lang/invoke/MethodHandles$Lookup;)Ljava/lang/invoke/MethodHandles$Lookup;
        at org.gradle.internal.classloader.ClassLoaderUtils.<clinit>(ClassLoaderUtils.java:43)
        ... 39 more


* Get more help at https://help.gradle.org

@meysholdt
Copy link
Member

meysholdt commented Nov 30, 2018

Something in grade tries to call java.lang.invoke.MethodHandles.privateLookupIn(Class, Lookup) , but that method was introduced in Java9 and we have Java8 installed.

Gradle itself is happy with Java8, according to the docs.

@meysholdt
Copy link
Member

workaround: use ./gradlew

@rdmueller
Copy link

workaround works - I installed gradle through sdkman.io and initialized the gradle wrapper...

I just wonder if it would make sense to have sdkman.io in the standard container. It lets you easily install various versions of various tools....

@meysholdt
Copy link
Member

meysholdt commented Nov 30, 2018

I just tried sdkman.io in gitpod as well:

  1. curl -s https://get.sdkman.io | bash
  2. source "/home/gitpod/.sdkman/bin/sdkman-init.sh"
  3. sdk install gradle

and gradle -version outputs Welcome to Gradle 5.0!.
I found it because Gradle officially supports it.

It makes sense to use it in the standard container because it can manage Java, Gradle and Maven in the user-space, just as we already do it for node via nvm. Also, it seems to more up-to-date than Debian/Ubuntu apt packages.

@jankeromnes
Copy link
Contributor

I'll look into fixing this in https://github.com/gitpod-io/workspace-images/blob/master/full/Dockerfile directly. Thanks for the sdkman.io suggestion!

@jankeromnes jankeromnes self-assigned this Feb 22, 2019
@jankeromnes
Copy link
Contributor

jankeromnes commented Feb 22, 2019

I guess we could use either https://sdkman.io or https://linuxbrew.sh here:

  • Homebrew seems to be more popular, and does a great job keeping its supported packages up-to-date, but its Linux support is quite recent and I haven't tried it yet.
  • On the other hand, SDKMAN seems to be specifically oriented toward Java, Maven and Gradle, so maybe it has better chances of doing a great job there.

I'll do some more research and experiments, but I'm open to suggestions/preferences.

@jankeromnes
Copy link
Contributor

I ran into a few bugs with Linuxbrew, so I went with SDKMAN to install Gradle and Maven.

I'd still like to install Linuxbrew though, because it would allow installing basically any package in Gitpod without sudo.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants