IntelliJ IDEA and Gradle - Cannot be applied to '(groovy.lang.Closure)'

JavaIntellij IdeaGroovyGradlebuild.gradle

Java Problem Overview


I have a Gradle file which, whenever I load open it in IntelliJ IDEA 14.1.5, shows IDE errors for the entire file. Namely all the errors seem to be either:

java.lang.String errors

java.lang.String errors

or

groovy.lang.Closure errors

groovy.lang.Closure errors

I've tried clearing the file's contents and only writing the top line:

group 'com.me.blah'

but even that results in an error.

For context's sake - this is an individual module in a larger SpringBoot project. This module is a set of simple static files (with Gradle for CSS compilation, static analysis, etc), while the rest are Java modules, and are not having Gradle issues.

Can anyone think why IntelliJ would be struggling to understand this Gradle file?

Java Solutions


Solution 1 - Java

I've noticed this often. When creating a new project and using the 'Gradle' template, IntelliJ seems to get it all wrong. So what I've resorted to doing is after creating a new project, delete the .idea and .iml files and re-open the project directly from the Gradle file. IntelliJ seems to better understand what is going on in this case.

Solution 2 - Java

For the first part of the question: group is a property, so there must be an assignment, not a function call. The right code is:

group = 'com.me.blah'

Solution 3 - Java

I found this suggestion in the IDEA bug tracker(IDEA-142683):

> Workaround:
One can add a comment such as
//noinspection GroovyAssignabilityCheck
to suppress the warning, but this should not be necessary as these are standard every day Gradle usages.

This issue was recently updated and is marked fixed, ready for release with version 2016.2 release.

Solution 4 - Java

Try File | Invalidate Caches and restart. It worked for me after i mess the syntaxe somewhere else in the file.

Solution 5 - Java

For anyone looking for a similar fix, this boiled down to the type of the module. My module was defined in my .iml file as

type="WEB_MODULE"

I created a new Gradle module and pasted in the same contents, deleted the original, renamed the new module to have the same name as the old one, and everything worked fine. When I diffed the results the only change was that the .iml file now said:

type="JAVA_MODULE"

So there's the answer, seemingly. Change your module from "web" to "java".

Solution 6 - Java

For me, after trying out all this answers without result, changing the Java SDK of the project did the trick, I was on 1.8 and changed it to the newest one, but still a project level language of 8.

Hope this helps!

Solution 7 - Java

What I found is that this warning is from Groovy inspection of the Intelliji. So if your project is not pure groovy, you can disable this inspection by going to File -> settings -> Editor -> Inspections -> disable Groovy. Again, just a workaround.

Solution 8 - Java

Happened to me recently on windows. I tried all of the above but it didn't work.

What i did:

1 - I had JAVA_HOME environment variable already set. So IDEA picked that as project SDK and these warnings showed up.

2 - So, i removed the default JAVA_HOME from project SDK and manually added jdk path. Restarted and all warnings were gone.

Maybe it will help someone. Thanks.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionSeb CharrotView Question on Stackoverflow
Solution 1 - JavaJon NicholsView Answer on Stackoverflow
Solution 2 - JavaBeholderView Answer on Stackoverflow
Solution 3 - JavaFGregView Answer on Stackoverflow
Solution 4 - JavaBancarel ValentinView Answer on Stackoverflow
Solution 5 - JavaSeb CharrotView Answer on Stackoverflow
Solution 6 - JavaAriel MirraView Answer on Stackoverflow
Solution 7 - JavaNeal ShaView Answer on Stackoverflow
Solution 8 - JavaRajkishan SwamiView Answer on Stackoverflow