getting started with gradle in eclipse on a mac

I’ve used Gradle before although not a ton. For example, I compared eGradle and Buildship here. It’s been a while though. Which means my laptop setup has changed enough for it to be an adventure. (and not everything I needed to know was in my memory).

Eclipse Oxygen comes with Gradle installed so I thought this would be easy. And if I had never installed Java 9 on my computer, that would have been the case. After all, you just need to run: File > New > Gradle Project

The original problem

I tried that and got this error:

org.gradle.tooling.GradleConnectionException: Could not fetch model of type ‘BuildEnvironment’ using Gradle distribution ‘https://services.gradle.org/distributions/gradle-3.5-bin.zip’.

Caused by: java.lang.reflect.InaccessibleObjectException: Unable to make protected java.lang.Package[] java.lang.ClassLoader.getPackages() accessible: module java.base does not “opens java.lang” to unnamed module @2e59aa

I got a similar error when trying to import an existing Gradle project. I have Gradle installed on the command line and it works fine.

What didn’t work 

I want to be using Java 8. I tried the following things that didn’t help:

  • Change eclipse.ini to use Java 8
  • Remove all Java 9 JDKs from the Eclipse workspace preferences.
  • Adding a system JAVA_HOME environment variable pointing to Java 8
  • This workaround editing the build.gradle file
  • A new workspace (my teammate teases me that my workspace was around when Obama got elected – I often do an upgrade in place)
  • Gradle code for Eclipse
  • Checked my versions against what is known to work. I do have Buildship 2.2+ (2.2.1) and Gradle 4.3+ (gradle 4.5).
  • Re-installing Eclipse and not installing/updating any plugins

Updating the plugin

Then I updated the Buildship plugin in Eclipse. Since I had done this in the past, I had to:

  1. Delete the Buildship update site
  2. Re-add the current update site. (Thanks to this post for the suggestion)
  3. Update plugin
  4. Restart Eclipse

That “helped” in that I got a different error:

Caused by: org.gradle.internal.exceptions.LocationAwareException: Unable to make protected void java.net.URLClassLoader.addURL(java.net.URL) accessible: module java.base does not “opens java.net” to unnamed module @6740e13b

This time it created the project on disk and merely didn’t import it. Importing had the same problem though. There is at least one known error with Java 9 and Buildship. And I’m getting a Java 9 error so clearly, I still have something pointing to Java 9 on system.

What actually worked

Running java -version showed I had Java 9 as my system default. This is because Mac defaults to the latest version. I didn’t have a problem earlier because Eclipse itself was set to use Java 8. (except when I’m playing with Java 9.)

I actually had to disable Java 9 on the Mac so it would recognize Java 8 as the default. This post shares how:

  1. cd /Library/Java/JavaVirtualMachines
  2. cd into my Java 9 directory
  3. cd contents
  4. mv Info.plist Info.plist.disabled
  5. Restart Eclipse

And a quick review of Gradle/Buildship

  1. You can intersperse running command line gradle commands and using Buildship. Since everything is stored in the gradle directories, they remember state from each other.
  2. To run “gradle clean” or “gradle build” in Buildship the first time:
    1. Go to the Gradle Tasks view
    2. Expand project
    3. Expand build
    4. Right click clean (or build)
    5. The Gradle Executions view shows what is still running
    6. The Console view shows the command line output
  3. To run “gradle clean” or “gradle build” in BuildShip the second time:
    1. Buildship automatically creates a run configuration for any builds you run. They have clear names (ex: atlanta-tourism – clean”) so you can easily find the right one. You can sticky common ones to the top since they are normal Eclipse run configurations
  4. To delete the whole gradle cache: rm /Users/xxx/.gradle/caches
  5. To delete a specific artifact rm /Users/nyjeanne/.gradle/caches/modules-2/files-2.1/… (I forgot to include a dependency and seeing everything re-downloaded helped)

 

 

 

eclipse oxygen (4.7.1.a) for the mac for the third time

I had downloaded Eclipse Oxygen when it came out in June. Then I downloaded the September version for early Java 9 support along with the JUnit 5 add on for the JavaOne Hands On Lab I delivered. This required downloading the Eclipse plugin. I’m giving a similar/longer JUnit 5 lab at DevNexus this month. It makes sense to start with a clean version for students to install. Therefore I decided to install Eclipse Oxygen for the third time.

This time I downloaded the December release of Oxygen (4.7.1a). It includes JUnit 5 and Java 9 support.

Installing

I downloaded Eclipse and chose “Eclipse IDE for Java Developers” from the wizard.

Opening Eclipse, I confirmed that I was using the December 2017 package.

Installing the plugins

The significant plugins I chose to re-install are listed in this table. eGit, Buildship (for Gradle), m2e (Maven) and I think EclEmma were already installed without me doing anything.

Plugin Purpose
Eclipse Tomcat Plugin One click launch for recent versions of Tomcat. Both are listed as being successors to Sysdeo. While both seem fine, I went with the “Eclipse Tomcat Plugin” that I had before updating Oxygen.
SonarLint  I use SonarLint daily to look for errors in my code.
Subclipse I got errors installing Subversive last time and switched to Subclipse.
Eclipse Memory Analyzer For finding memory leaks. Unlike last year with Neon, it installed cleanly from Eclipse Marketplace.
Freemarker IDE Freemarker syntax highlighting and macro assistance.

 

Pydev Python plugin/perspective
Contrast To spot potential security issues. See my impressions of the Contrast plugin.
Bytecode Outline I’ve been looking at bytecode a good fit for the book to make sure I understand why things are happening. This plugin makes it easy. I first tried Bytecode Visualizer but install failed. (The website says there were 25 failed installs with the same dependency problem in the last 7 days). After installing Bytecode Outline, I realized this was the one I had installed for Luna anyway.
Pitclipse For mutation testing coverage

 

Fix for M3D Micro+ failed to open stl modes after upgrading to High Sierra

I upgraded my Mac to High Sierra and then learned more about .NET and the Mac that I wanted to.

I got an error that there were two copies of a file:

FIFinderSyncExtensionHost is implement in both /System/Library/PrivateFrameworks/FinderKit.Framework/Versions/A/FinderKit and /System/Library/PrivateFramworks/FileProvider.framework/OverrideBundles/FinderSyncCollaborationFileProviderOveride.bundle/Contents/MacOS/FinderSyncCollaborationFileProviderOveride. Of of the two will be used. Which one is undefined.

There was an error in loading the file. Check to see the file is valid.

First thing that didn’t work

I tried to re-install Mono choosing the latest release 5.4.1. (Mono is the runtime for .NET on Mac and the M3D software uses .NET). This actually made things worse cause M3D to crash on opening. Then I rebooted and got an error that I wasn’t on the latest Mono. But I was.

Second thing that didn’t work

I tried re-installing the M3D software. I got:

The Mono Framework installed is not support. You must install the latest version to continue. Would you like to visit the Mono website to downloaded it?

The Mono Framework is a required component for this software and must be installed first.

Turns out I installed the Micro software instead of the Micro+ software. Reinstalled correct software.

Third thing that didn’t work

Then I tried downloading Visual Studio for Mac. Didn’t help.

Fourth thing that didn’t work

At this point, I decided to be more methodical. I tried running M3D at the command line to see if I could get more data:

cd /Applications/M3D.app/Contents/MacOS

./m3d

The highlight is:

2018-01-15 17:24:37.585 M3D[1127:35860] run command:/Library/Frameworks/Mono.framework/Versions/Current/Commands/mono /Applications/M3D.app/Contents/Resources/M3DGUI.exe

WARNING: The Carbon driver has not been ported to 64bits, and very few parts of Windows.Forms will work properly, or at all

There was also

Agreeing to the Xcode/iOS license requires admin privileges, please run “sudo xcodebuild -license” and then retry this command.

I ran the command to agree to the license, but that didn’t solve my problem.

Fifth thing that didn’t work

I learned that Mono 5.4.1 defaults to 64 bit. But M3D and Carbon require 32 bit. There’s a flag “–arch=32/64” but doesn’t help with M3D so I uninstalled Mono again:

sudo rm -rf /Library/Frameworks/Mono.framework

sudo pkgutil --forget com.xamarin.mono-MDK.pkg

sudo rm -rf /etc/paths.d/mono-commands

Then I installed an older version (5.0.1) of mono. WHich got me back to the original message.

Sixth thing that didn’t work

Loading a file I’ve used before

What did work

I contacted M3D support and they gave me a workaround in just a few business hours. They suggested clicking on a recent model rather than loading through the OS. That worked fine. Then they suggested dragging the file directly from the Finder into the open UI.

That worked! I can print again. Thanks M3D.