Java 8中的Maven错误

cod*_*ler 5 java maven java-8

使用Maven和Java 8获取错误(jdk1.8.0_45).Java 7不会发生此问题.

MCVE

创建一个示例maven项目.例如:

mvn archetype:create -DgroupId=testinovke -DartifactId=testinvoke
Run Code Online (Sandbox Code Playgroud)

在生成的App.java文件中创建以下内容

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();
    }
}
Run Code Online (Sandbox Code Playgroud)

编译maven项目:

mvn clean compile
Run Code Online (Sandbox Code Playgroud)

产量

收到以下错误:

testinvoke/src/main/java/testinovke/App.java:[25,18] method invoked with incorrect number of arguments; expected 0, found 1
Run Code Online (Sandbox Code Playgroud)

尝试使用Maven 3.0.4和3.3.3.如果我使用Javac命令直接针对App.java进行编译,则此问题不存在.

Jil*_*urp 5

添加编译器的插件配置:

        <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> 
Run Code Online (Sandbox Code Playgroud)