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-plugin
JDK/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_HOME
Java 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
및 " " "를 통해"mvn
JDK8의 JDK입니다.
JDK 이 JDK에서 했습니다.mvn
JDK-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
'programing' 카테고리의 다른 글
Java generics의 type 파라미터에 물음표는 무엇을 의미합니까? (0) | 2022.08.07 |
---|---|
Vue.js에서 이러한 종속성을 찾을 수 없습니다. (0) | 2022.08.07 |
vue-router에서 1개 이외의 모든 루트를 잠글 수 있습니까?안전한가요?아니면 다른 방법을 써야 할까? (0) | 2022.08.07 |
vue 컴포넌트를 새로고침하려면 어떻게 해야 합니까? (0) | 2022.08.07 |
동일한 폴더에 여러 vue 앱을 생성하는 방법 (0) | 2022.08.07 |