У меня есть тривиальный проект Maven:
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
Есть ли способ это исправить?
maven-compiler-plugin:3.8.0
для исправления вышеуказанной ошибки .Ответы:
Начиная с 30 июля 2018 года, чтобы исправить вышеуказанную проблему, можно настроить версию Java, используемую в Maven, на любую версию до JDK / 11 и использовать
maven-compiler-plugin:3.8.0
для указания версии 9,10,11 без каких-либо явных зависимостей .Примечание : - Значение по умолчанию для источника / цели было поднято с 1,5 до 1,6 с этой версией. - заметки о выпуске.
Редактировать [30.12.2018]
Фактически, вы можете использовать ту же версию
maven-compiler-plugin
при компиляции кода и для JDK / 12.Подробнее и пример конфигурации о том, как скомпилировать и выполнить функцию предварительного просмотра JDK с Maven .
источник
maven.compiler.release
:<properties><maven.compiler.release>11</maven.compiler.release></properties>
ОБНОВИТЬ
Ответ сейчас устарел. Смотрите этот ответ .
maven-compiler-plugin
зависит от старой версии ASM, которая еще не поддерживает Java 10 (и Java 11). Тем не менее, можно явно указать правильную версию ASM:Вы можете найти последнюю версию на https://search.maven.org/search?q=g:org.ow2.asm%20AND%20a:asm&core=gav
источник
Повышение вашего maven-compiler-plugin до 3.8.0 кажется необходимым, но не достаточным. Если у вас все еще есть проблемы, вы также должны убедиться, что ваша переменная среды JAVA_HOME установлена на Java 10 (или 11), если вы работаете из командной строки. (Полученное сообщение об ошибке не сообщит вам об этом.) Или, если вы работаете из IDE, вам нужно убедиться, что оно настроено для запуска maven с вашим текущим JDK.
источник
Возможно, это не та же самая ошибка, но у меня была похожая ошибка.
Проверьте Maven Java-версию
Поскольку Maven также работает с Java, сначала проверьте, на какой версии работает ваш Maven:
Возвращает:
Несовместимая версия
Здесь выше мой мавен бежит с
Java Version 1.8.0_151
. Так что даже если я укажу maven для компиляцииJava 11
:Он логически распечатает эту ошибку:
Как установить конкретную версию Java для Maven
Логическая вещь, которую нужно сделать, это установить более высокую версию Java в Maven (например, версия Java 11 вместо 1.8).
Maven использует переменную окружения,
JAVA_HOME
чтобы найти версию Java для запуска. Поэтому измените эту переменную на JDK, с которым вы хотите скомпилировать (например, OpenJDK 11).Санитарная проверка
Затем запустите еще раз,
mvn --version
чтобы убедиться, что о конфигурации позаботились:доходность
Что намного лучше и правильнее для компиляции кода, написанного со спецификациями Java 11.
источник
Укажите maven.compiler.source и целевую версию.
1) Версия Maven, которая поддерживает используемый вами jdk. В моем случае JDK 11 и maven 3.6.0.
2) pom.xml
В качестве альтернативы вы можете полностью указать плагин компилятора maven. Смотрите предыдущие ответы. В моем примере он короче :)
3) перестройте проект, чтобы избежать ошибок компиляции в вашей среде IDE.
4) Если все равно не работает. В Intellij Idea я предпочитаю использовать терминал вместо терминала из ОС. Затем в Idea перейдите в файл -> настройки -> инструменты сборки -> maven. Я работаю с maven, скачанным с apache (по умолчанию Idea использует связанный maven). Затем перезапустите Idea и
mvn clean install
снова запустите . Также убедитесь, что у вас правильный путь , переменные среды MAVEN_HOME , JAVA_HOME .Я тоже видел этот однострочный, но он не работает.
Я сделал несколько быстрых стартовых проектов, которые я повторно использую в других своих проектах, не стесняйтесь проверить:
источник
Если вы используете весеннюю загрузку, добавьте эти теги в pom.xml.
и
Вы можете изменить версию Java на 11 или 13, а также в
<maven.compiler.release>
теге.Просто добавьте теги ниже в pom.xml
Вы можете изменить 11 на 10, 13, а также изменить версию Java. Я использую Java 13, который является последним. Меня устраивает.
источник
Хорошо, так что для меня ничего не сработало.
Я использовал ботинки пружинных с Hibernate. Версия для весенней загрузки была ~ 2.0.1, и я продолжал получать эту ошибку и исключение нулевого указателя при компиляции. Проблема была с Hibernate, который нуждался в повышении версии. Но после этого у меня возникли некоторые другие проблемы, которые, как мне казалось, не обрабатывали аннотации процессора, поэтому я решил просто поднять весну с версии 2.0.1 до версии 2.1.7, и все заработало, как и ожидалось.
Вы все еще должны добавить вышеупомянутый плагин жестко
Надеюсь, это поможет!
источник