programing

Maven에서는 간단한 Java 10 / Java 11 프로젝트를 컴파일할 수 없습니다.

javaba 2022. 8. 7. 17:44
반응형

Maven에서는 간단한 Java 10 / Java 11 프로젝트를 컴파일할 수 없습니다.

나는 사소한 메이븐 프로젝트가 있다.

src
└── main
    └── java
        └── module-info.java
pom.xml

pom.xml:

<groupId>org.example</groupId>
<artifactId>example</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<name>example</name>

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.7.0</version>
            <configuration>
                <release>10</release>
            </configuration>
        </plugin>
    </plugins>
</build>

mvn -X install -DskipTests=true , 「」

org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.7.0:testCompile (default-testCompile) on project example: Execution default-testCompile of goal org.apache.maven.plugins:maven-compiler-plugin:3.7.0:testCompile failed.
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:213)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:154)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:146)
        at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:117)
        at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:81)
        at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
        at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
        at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:309)
        at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:194)
        at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:107)
        at org.apache.maven.cli.MavenCli.execute(MavenCli.java:993)
        at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:345)
        at org.apache.maven.cli.MavenCli.main(MavenCli.java:191)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:564)
        at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
        at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
        at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
        at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
Caused by: org.apache.maven.plugin.PluginExecutionException: Execution default-testCompile of goal org.apache.maven.plugins:maven-compiler-plugin:3.7.0:testCompile failed.
        at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:145)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208)
        ... 20 more
Caused by: java.lang.IllegalArgumentException
        at org.objectweb.asm.ClassReader.<init>(Unknown Source)
        at org.objectweb.asm.ClassReader.<init>(Unknown Source)
        at org.objectweb.asm.ClassReader.<init>(Unknown Source)
        at org.codehaus.plexus.languages.java.jpms.AsmModuleInfoParser.parse(AsmModuleInfoParser.java:80)
        at org.codehaus.plexus.languages.java.jpms.AsmModuleInfoParser.getModuleDescriptor(AsmModuleInfoParser.java:54)
        at org.codehaus.plexus.languages.java.jpms.LocationManager.resolvePaths(LocationManager.java:83)
        at org.apache.maven.plugin.compiler.TestCompilerMojo.preparePaths(TestCompilerMojo.java:281)
        at org.apache.maven.plugin.compiler.AbstractCompilerMojo.execute(AbstractCompilerMojo.java:762)
        at org.apache.maven.plugin.compiler.TestCompilerMojo.execute(TestCompilerMojo.java:176)
        at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134)
        ... 21 more

이 문제를 해결할 방법이 있을까요?

2018년 30Jul에서는 위의 문제를 수정하기 위해 maven 내에서 사용되는 Java 버전을 최대 JDK/11로 설정하고 를 사용하여 9,10,11 중 하나의 릴리스를 명시적으로 의존하지 않고 지정할 수 있습니다.

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.8.0</version>
    <configuration>
        <release>11</release>  <!--or <release>10</release>-->
    </configuration>
</plugin>

참고:- 이 버전에서는 소스/타겟의 기본값이 1.5에서 1.6으로 변경되었습니다. -- 릴리스 노트


편집 [30.12.2018]

실제로, 같은 버전의 를 사용할 수 있습니다.maven-compiler-pluginJDK/12 j j j j j j j 。

Maven에서 JDK 미리보기 기능을 컴파일실행하는 방법에 대한 자세한 내용과 설정 예.

갱신하다

그 답은 이제 쓸모없다. 답을 보세요.


maven-compiler-plugin는 아직 및 Java 11하지 않는 합니다.버전의 을 명시적으로 할 수 .

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.7.0</version>
    <configuration>
        <release>10</release>
    </configuration>
    <dependencies>
        <dependency>
            <groupId>org.ow2.asm</groupId>
            <artifactId>asm</artifactId>
            <version>6.2</version> <!-- Use newer version of ASM -->
        </dependency>
    </dependencies>
</plugin>

최신 정보는 https://search.maven.org/search?q=g:org.ow2.asm%20AND%20a:asm&core=gav에서 확인할 수 있습니다.

똑같은 오류는 아닐지 모르지만 비슷한 오류가 있었어요.

Maven Java 버전 확인

Maven은 Java에서도 실행되므로 먼저 Maven이 어떤 버전에서 실행 중인지 확인하십시오.

mvn --version | grep -i java 

반환:

Java 버전 1.8.0_151, 벤더:Oracle Corporation, 런타임:C:\tools\jdk\openjdk1.8

호환되지 않는 버전

에는 기기 with with with with with with with with 가 달려 있다.Java Version 1.8.0_151을 maven으로 maven을 지정해도Java 11:

<properties>
    <java.version>11</java.version>
    <maven.compiler.source>${java.version}</maven.compiler.source>
    <maven.compiler.target>${java.version}</maven.compiler.target>
</properties>

이 에러는 논리적으로 출력됩니다.

[오류] 목표 org.apache.maven을 실행하지 못했습니다.플러그인: maven-display-displays: 3.8.0: 프로젝트efa-displays-task의 경우:치명적인 오류 컴파일: 비활성 타깃릴리즈: 11 - > [ Help 1 ]

특정 Java 버전을 Maven으로 설정하는 방법

논리적으로 해야 할 일은 상위 Java 버전을 Maven으로 설정하는 것입니다(1.8 대신 Java 버전 11).

을 이용한다.JAVA_HOME자바어JDK(Open JDK 11)는, JDK(Open JDK 11)에 대응합니다.

건전성 검사

다시 mvn --version이치노

mvn --version | grep -i java

수율

Java 버전: 11.0.2, 벤더:Oracle Corporation, 런타임:C:\tools\jdk\openjdk11

Java 11 사양으로 작성된 코드를 컴파일하는 것이 훨씬 더 낫고 정확합니다.

maven.compiler를 지정합니다.소스 버전과 타깃 버전

1) 사용하는 jdk를 지원하는 Maven 버전.저는 JDK 11과 maven 3.6.0입니다.

2) pom.xml

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

또는 maven 컴파일러 플러그인을 완전히 지정할 수도 있습니다.이전 답변을 참조하십시오.이 예에서는 더 짧습니다:)

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.8.0</version>
            <configuration>
                <release>11</release>
            </configuration>
        </plugin>
    </plugins>
</build>

3) 프로젝트를 재구축하여 IDE 컴파일 오류를 방지합니다.

하지 않는 4)는 동작하지 않습니다.Intelij Idea에서는 OS에서 단말기를 사용하는 것보다 단말기를 사용하는 것을 선호합니다.아이디어 파일 -> 설정 -> 빌드 도구 -> 메이븐아파치 다음 를 다시 하고 Idea를 실행합니다.mvn clean install다시. 또한 올바른 경로, MAVEN_이 있는지 확인하십시오., Java_HOME 환경 변수

저도 이 원라이너를 봤는데 작동이 안 돼요.

<maven.compiler.release>11</maven.compiler.release>

몇 가지 퀵스타터 프로젝트를 만들어 다른 프로젝트에서 다시 사용하고 있으므로, 다음 사항을 확인해 주십시오.

★★★★★★★★★★★★★★★의 향상maven-compiler-plugin로로 합니다.3.8.0필요한 것 같지만 충분하지 않습니다.도 꼭 하셔야 합니다.JAVA_HOMEJava 10(Java 11)을 사용할 수 있다오류 없습니다).또는 IDE에서 실행 중인 경우 현재 JDK에서 실행되도록 설정해야 합니다.

스프링 부트를 사용하는 경우 이러한 태그를 pom.xml에 추가합니다.

<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
</plugin>

그리고.

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    `<maven.compiler.release>`10</maven.compiler.release>
</properties>

할 수 .<maven.compiler.release>붙이다

pom.xml에 아래 태그를 추가합니다.

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <maven.compiler.release>11</maven.compiler.release>
</properties>

11을 10, 13으로 변경하여 Java 버전을 변경할 수도 있습니다.저는 최신 버전인 자바13을 사용하고 있습니다.저는 좋아요.

제 경우 JAVA_를 명시적으로 설정해야 했습니다. 스크립트로 JDK-11에 HOME. 단, 단말기에는 Java 11 버전이 표시됩니다.

제가 지금입니다.mvn 및 " " "를 통해"mvnJDK8의 JDK입니다.

JDK 이 JDK에서 했습니다.mvnJDK-11을 사용하다

#!/bin/bash
echo $(java -version)
echo $(mvn --version | grep -i java )

export JAVA_HOME="/opt/jdk11/"
export PATH=$JAVA_HOME/bin:$PATH

echo $(java -version)
echo $(mvn --version | grep -i java )

그래, 그래서 나는 아무것도 안 먹혔어.
겨울잠이 있는 스프링 부츠를 쓰고 있었어요.spring boot 버전은 ~2.0.1 이며 컴파일 시 이 에러와 늘 포인터 예외를 계속 받습니다.버전 범프가 필요한 휴지 상태에 문제가 발생.그러나 그 후 주석 프로세서가 인식되지 않는 것 같은 다른 문제가 있어 2.0.1 릴리스에서 2.1.7 릴리스로 스프링을 올리기로 결정했고 모든 것이 예상대로 작동했습니다.

.
도움이 됐으면 좋겠다!

JAVA_를 설정한 후에도 아무것도 동작하지 않는 경우올바른 패스로의 HOME, JAVA_의 오버라이드가 없는지 확인합니다.홈 패스<user>/.mavenrc!

저 같은 경우에는

  • "메아리 $JAVA_"HOME'은 버전 11을 나타냅니다.
  • "version"은 버전 11을 나타냅니다.
  • 단, "mvn - version"은 "Java 버전"이 11이 아님을 나타냅니다.

이것을 .bash_profile 상단에 붙여 소스합니다.그건 효과가 있다.

export JAVA_8_HOME=$(/usr/libexec/java_home -v1.8)
export JAVA_11_HOME=$(/usr/libexec/java_home -v11)

alias java8='export JAVA_HOME=$JAVA_8_HOME;export PATH=$HOME/bin:$JAVA_HOME/bin:$PATH'
alias java11='export JAVA_HOME=$JAVA_11_HOME;export PATH=$HOME/bin:$JAVA_HOME/bin:$PATH'

java11

언급URL : https://stackoverflow.com/questions/49398894/unable-to-compile-simple-java-10-java-11-project-with-maven

반응형