Maven error with Java 8

Getting error with Maven and Java 8 (jdk1.8.0_45). This issue does not occur with Java 7.

Mcve

Create a maven sample project. For instance:

mvn archetype:create -DgroupId=testinovke -DartifactId=testinvoke 

Create the following content in the generated App.java file

 package testinovke; import java.lang.invoke.MethodHandle; import java.lang.invoke.MethodHandles; import java.lang.invoke.MethodType; public class App { public static MethodHandles.Lookup lookup; public static class Check { public void primitive(final int i){ } public void wrapper(final Integer i){ } } public static void main(String[] args) throws Throwable { Check check = new Check(); MethodType type = MethodType.methodType(void.class, int.class); MethodHandle mh = lookup.findVirtual(Check.class, "primitive", type); mh.invoke(); } } 

Compile the maven project:

 mvn clean compile 

Output

You will get the following error:

 testinvoke/src/main/java/testinovke/App.java:[25,18] method invoked with incorrect number of arguments; expected 0, found 1 

Tried this with both Maven 3.0.4 and 3.3.3. This problem does not exist if I directly compile the App.java application using the Javac command.

+5
source share
2 answers

Add plugin configuration for compiler:

  <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <verbose>true</verbose> <fork>true</fork> <source>1.8</source> <target>1.8</target> </configuration> </plugin> 
+5
source

Another solution is to add these properties:

 <properties> <maven.compiler.target>1.8</maven.compiler.target> <maven.compiler.source>1.8</maven.compiler.source> </properties> 

to your pom.xml , and the plugins will automatically pick them up.

+4
source

All Articles