Разветвленная виртуальная машина закрылась, не попрощавшись должным образом. Сбой виртуальной машины или вызов System.exit

Пожалуйста, помогите мне решить эту проблему. Не совсем понимаю, что означает ошибка в журнале.

[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 21.749s
[INFO] Finished at: Thu Apr 24 10:10:20 IST 2014
[INFO] Final Memory: 15M/37M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.15:test (default-test) on project samples.simpleforwarding: Execution default-test of goal org.apache.maven.plugins:maven-surefire-plugin:2.15:test failed: The forked VM terminated without saying properly goodbye. VM crash or System.exit called ?
[ERROR] Command wascmd.exe /X /C ""C:\Program Files\Java\jdk1.7.0_55\jre\bin\java" -Xmx1024m -XX:MaxPermSize=256m -jar E:\OpenDayLight\controller\opendaylight\samples\simpleforwarding\target\surefire\surefirebooter53410321571238933.jar E:\OpenDayLight\controller\opendaylight\samples\simpleforwarding\target\surefire\surefire86076271125218001tmp E:\OpenDayLight\controller\opendaylight\samples\simpleforwarding\target\surefire\surefire_01846991116135903536tmp"
[ERROR] -> [Help 1]
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/PluginExecutionException

person astack    schedule 24.04.2014    source источник
comment
Пожалуйста, повторно запустите Maven с -e и -X, как предлагает вывод, и вставьте то, что он вам дает. Кроме того, вы создаете свой собственный код или существующую библиотеку? Если вы создаете свой собственный код, вызываете ли вы System.exit (int) где-нибудь? Если вы создаете существующую библиотеку, где вы взяли исходный код?   -  person Dylon    schedule 24.04.2014
comment
@Dylon Edwards: Это существующий исходный код, проект OpenDayLight для реализации SDN.   -  person astack    schedule 24.04.2014
comment
Недавний сценарий, который воспроизводит эту проблему, был у меня, когда я запускал тестовые наборы из файлов xml. Если XML-файл определяет класс, который больше не существует, или ссылается на старое полное имя класса, которое было перемещено, тогда JVM не может загрузить класс. Это приводит к странному сообщению, которое вы наблюдали. Присмотревшись к любой трассировке стека, вы можете выявить такие проблемы, в этом случае нет необходимости передавать переключатели -e или -X.   -  person Ivaylo Slavov    schedule 18.09.2014
comment
@astack, что стало для этого решением? не могли бы вы отметить ответ или написать свой, пожалуйста.   -  person Naman    schedule 13.10.2016
comment
Вы пробуете это? `` ‹Build› ‹pluginManagement› ‹plugins› ‹plugin› ‹groupId› org.apache.maven.plugins ‹/groupId› ‹artifactId› maven-surefire-plugin ‹/artifactId› ‹version› версия ‹/version› ‹/version› ‹ / plugin ›‹/plugins› ‹/pluginManagement› ‹/build›` `   -  person Evan    schedule 23.02.2021
comment
Я все еще получаю эту ошибку ни одно из упомянутых решений не помогло мне. Я использую java 15 и maven surefire plug в 3.0.0-M5.   -  person Sourabh Roy    schedule 16.06.2021


Ответы (57)


У меня была такая же проблема, и я решил, добавив:

<argLine>-Xmx1024m -XX:MaxPermSize=256m</argLine>

Весь элемент плагина:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-surefire-plugin</artifactId>
  <configuration>
    <forkCount>3</forkCount>
    <reuseForks>true</reuseForks>
    <argLine>-Xmx1024m -XX:MaxPermSize=256m</argLine>
  </configuration>
</plugin>
person xiaohuo    schedule 17.11.2015
comment
+1 Я использовал этот фрагмент дословно, и он устранил мою проблему с Travis-CI. Мы не получали этого ни на одной из рабочих станций наших разработчиков. - person StartupGuy; 17.02.2016
comment
У меня это тоже сработало на машине с недостаточным объемом памяти для выполнения задач. - person Mateva; 07.11.2017
comment
Это не помогло мне решить проблему. Эта проблема может возникнуть, если одна из зависимостей (jar и т. Д.) В .m2 повреждена. Удаление ~ / .m2 / repository rm -rf ~/.m2/repository, а затем mvn install решило эту проблему для меня. - person ch4nd4n; 12.06.2018
comment
Скопируйте и вставьте это в мой файл pom, и это сработало как шарм, спасибо - person Flaom; 12.07.2018
comment
Предупреждение OpenJDK 64-Bit Server VM: игнорирование параметра MaxPermSize = 256m; поддержка была удалена в 8.0 - person Julien; 15.11.2018
comment
+1 - решил это за меня, следуя за Джоном Томпсоном Spring framework Руководство от новичков до гуру и интеграция Fetenarchiv (Spring Pet Clinic Fork с инструментом управления сборкой Maven) в непрерывную интеграцию с CircleCI. - person Jochen Gebsattel; 11.09.2019
comment
Может ли кто-нибудь объяснить, что он на самом деле делает и какие эффекты у него есть? - person borgmater; 12.11.2019
comment
[ОШИБКА] См. Файлы дампа (если они есть) [дата] .dump, [дата] -jvmRun [N] .dump и [дата] .dumpstream. [ОШИБКА] Разветвленная ВМ была закрыта без должного прощания. Сбой виртуальной машины или вызов System.exit? [ОШИБКА] Команда была / bin / sh -c cd / home / && / usr / lib / jvm / java-8-oracle / jre / bin / java -Xmx2048m -XX: MaxPermSize = 1024m -jar / target / surefire / surefirebooter2708310780842644525 .jar / target / surefire 2019-12-13T11-45-45_514-jvmRun1 surefire3662243206118838053tmp surefire_03776551545826621467tmp [ERROR] Код выхода процесса: 0 [ERROR] Crashed tests: - person Akhil Surapuram; 13.12.2019
comment
Я получаю это, даже если добавил xmx и xxmaxperspace - person Akhil Surapuram; 13.12.2019
comment
Обратите внимание, что это может повредить jacoco выполнение плагина (я столкнулся с этим), см. stackoverflow.com/a/47039600/8534088. - person Dmitriy Popov; 08.05.2020
comment
Еще один момент, который следует добавить, если существует зависимость от тестовых случаев, когда они не могут выполняться параллельно, тогда следует использовать только forkCount как 1. Я боролся, но смог решить в моем проекте, помогая местным предприятиям: imobilenumbertracker.com/busshopscategories - person Amandeep Singh; 24.06.2020
comment
Спасибо, друг, это сработало для меня, просто вставил код выше, поскольку он находится в файле pom, он сработал - person Anil Amane; 23.12.2020
comment
Это сработало для меня как шарм !! Итак, что я предполагаю .. это дает больше памяти для задачи .. но я также получаю это [ОШИБКА] предупреждение ВМ 64-разрядного сервера OpenJDK: игнорирование параметра MaxPermSize; поддержка была удалена в журнале 8.0 .. в чем ее значение .. сборка прошла успешно .. Я работаю на jdk11 - person sromit; 07.05.2021
comment
Удаление опции -XX: -UseSplitVerifier в ‹argLine› сработало для меня. Я обновляю свою кодовую базу до AdoptOpenJDK 11, и эта опция устарела в JDK 1.8. - person Prashanth; 14.07.2021
comment
Это не будет работать очень хорошо, если у вас установлен плагин JaCoCo. JaCoCo перестанет сообщать о покрытии. Из JaCoCo: вы не должны использовать forkCount, равный 0, или устанавливать для forkMode значение never, так как это помешает выполнению тестов с установленным javaagent и никакое покрытие не будет записано. - person Dherik; 23.07.2021

В моем случае проблема была связана с выводом слишком длинного журнала в консоль IntelliJ IDEA (ОС Windows 10).

Команда:

mvn clean install

Эта команда решила проблему для меня:

mvn clean install > log-file.log
person Mikhail    schedule 27.08.2018
comment
Слишком длинные журналы тоже были проблемой для меня! Перенаправление в файл журнала не помогло. Изменение некоторых из наиболее распространенных операторов ведения журнала, от информации до отладки, решило проблему. - person RvPr; 08.04.2019
comment
в моем случае слишком много журналов было настоящей проблемой !! - person Changwon Choe; 18.04.2019
comment
Не забудьте также поток ошибок: mvn clean test 2 ›err.txt 1› out.txt или mvn clean test ›out.txt 2› & 1 или mvn clean test 2 ›& 1 | tee out.txt При перенаправлении вы можете смотреть вывод на другой консоли с помощью less + F out.txt - person radzimir; 12.06.2019
comment
Для меня переход с Windows cmd на консоль Intellij решил эту проблему. - person Broccoli; 29.07.2019
comment
перенаправление в файл журнала работало с maven 3.6.2. Или просто использование maven 3.1.1 также решает проблему - person Filip; 27.09.2019
comment
Действительно, перенаправление в файл журнала решает эту проблему. - person horizon7; 05.12.2019
comment
Я получил в один и тот же день 2 разных ПК с одинаковыми версиями Windows 10, maven и IntelliJ, и это произошло только на одном из ПК, поэтому это немного странно. Тем не менее перенаправление журнала сработало для того, у кого возникла проблема. - person RCaetano; 28.01.2020
comment
СПАСИБО. К тому же это очень удручает. - person andydavies; 18.02.2020
comment
очень странное сообщение о том, что журнал консоли не выполняет весь процесс сборки, должен был быть способ отключить сообщение об отладке во время выполнения тестов - person Saran; 27.08.2020
comment
У меня такая же ошибка при использовании Cmder (замена командной строки Windows). Решение Михаила там тоже сработало! - person Todd; 03.02.2021
comment
Это сработало как по волшебству !!!! l. В качестве альтернативы я попробовал вести журнал набора номера в конфигурации spring application.yaml .. и это сработало - person Deekshith Anand; 09.02.2021
comment
Так что это тоже работает для меня. Но это не подходящее решение. Необходимость открытия файла для проверки ведения журнала моего модульного теста, конвейеров и т. Д. Этот ответ на другое сообщение stackoverflow.com/a/57902807 / 5773994 представляет собой примерно ту же проблему и упоминает версии в решении выше. Согласно сообщению, тайм-аут в этой версии уменьшен. Так что установка более высокого тайм-аута имеет смысл. И это работает! - person Radboud; 18.06.2021

У меня очень похожая проблема (Сборка Maven и maven-failsafe-plugin - разветвленная виртуальная машина завершилась без должного прощания) и нашел три решения, которые у меня сработали:

Описание проблемы

Проблема связана с плагином maven maven-surefire-plugin только в версиях 2.20.1 и 2.21.0. Я проверил, а вы используете версию 2.20.1.

Решение 1

Обновите версию плагина до 2.22.0. Добавьте в pom.xml:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-surefire-plugin</artifactId>
  <version>2.22.0</version>
</plugin>

Решение 2

Понизьте версию плагина до 2.20. Добавьте в pom.xml:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-surefire-plugin</artifactId>
  <version>2.20</version>
</plugin>

Решение 3

Используйте конфигурацию плагина testFailureIgnore. Добавьте в pom.xml:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-surefire-plugin</artifactId>
  <configuration>
    <testFailureIgnore>true</testFailureIgnore>
  </configuration>
</plugin>
person Michał Orliński    schedule 29.06.2018
comment
Для меня эта комбинация сработала, спасибо: ‹plugin› ‹groupId› org.apache.maven.plugins ‹/groupId› ‹artifactId› maven-surefire-plugin ‹/artifactId ‹›version› 2.22.1 ‹/version› ‹configuration› ‹ testFailureIgnore ›true ‹/testFailureIgnore› ‹/configuration› ‹/plugin› - person Abhishek; 11.01.2019
comment
Спасибо за это, использование maven:3.6.0-jdk-10 образа Docker и обновление до версии 3.0.0-M3 из maven-surefire-plugin также решено для меня. - person danialk; 23.04.2019
comment
Что касается Решения 3: можем ли мы действительно сказать, что игнорирование ошибок тестирования - это решение? Какой смысл в тестах, если их результат бессмысленный? - person Ulukai; 05.06.2019
comment
Я только что обновил maven-surefire-plugin до 2.22.2 и отлично работает! - person Krzysztof Walczewski; 26.06.2019
comment
Ага! Обновление surefire до версии 2.22.2 тоже решило эту проблему. Спасибо! - person Migs; 07.04.2020
comment
@Ulukai Параметр testFailureIgnore может быть удобен, если вы хотите, чтобы ваш сервер сборки отмечал сборку как нестабильную в случае сбоев теста, а не как сбой. Это имеет смысл только в том случае, если ваша система сборки настроена на проверку XML-файлов JUnit. - person seanf; 16.10.2020
comment
Я получаю эту ошибку с Surefire v2.22.2. :( - person Jack Straw; 14.07.2021

Эта часть Surefire FAQ может вам помочь :

Surefire выдает сообщение "Разветвленная виртуальная машина прекращена, не попрощавшись должным образом".

Surefire не поддерживает тесты или какие-либо библиотеки, на которые есть ссылки, вызывающие System.exit () в любое время. Если они это сделают, они несовместимы с surefire, и вам, вероятно, следует сообщить о проблеме в библиотеку / поставщику. В качестве альтернативы разветвленная виртуальная машина также может аварийно завершить работу по ряду причин, которые также могут вызвать эту проблему. Найдите классические файлы hs_err *, указывающие на сбои виртуальной машины, или изучите вывод журнала при запуске maven при выполнении тестов. Некоторые необычные выходные данные аварийных процессов могут быть сброшены в консоль / журнал. Если это происходит в среде CI и только по прошествии некоторого времени существует большая вероятность того, что в вашем тестовом наборе происходит утечка какого-либо ресурса уровня ОС, что ухудшает ситуацию при каждом запуске. Обычные инструменты мониторинга на уровне операционной системы могут дать вам некоторое представление.

person agudian    schedule 02.06.2014
comment
Для меня это не было ни одной из упомянутых возможных причин. Вместо этого в проекте были указаны параметры JVM для плагина surefire, который устарел с обновлением до Java 11 и заставил JVM, созданную для запуска тестов, немедленно выйти при запуске. - person Torben; 11.02.2021

На сегодняшний день (30.10.2018) мы заметили, что наши сборки в Jenkins ломаются с этой ошибкой.

Ошибка немного вводит в заблуждение и требует просмотра вывода дампа в target/surefire-reports/, чтобы увидеть следующее сообщение об ошибке:

Error: Could not find or load main class org.apache.maven.surefire.booter.ForkedBooter

Это привело меня к следующему сообщению SO, в котором упоминается возможная ошибка в OpenJDK 181: Maven surefire не может найти класс ForkedBooter

Любое из исправлений в этом посте решает мою проблему. Чтобы быть конкретным, я использовал одно из этих:

  1. Переход со сборки в докер-контейнере maven:3.5.4-jdk-8 на maven:3.5.4-jdk-8-alpine
  2. Переопределение загрузчика классов Spring Boot подробно описано здесь: https://stackoverflow.com/a/50661649/1228408
person chizou    schedule 30.10.2018
comment
Спасибо. В нашем случае помог переход с 1.8.0_161-b12 на 11.0.1 + 13. - person Karussell; 04.11.2018
comment
Это точная проблема, с которой я столкнулся на своем Jenkins, и теперь она решена. Спасибо. - person Vighnesh Pai; 14.11.2018
comment
У OP было другое сообщение об ошибке: The forked VM terminated without saying properly goodbye. VM crash or System.exit called ? - person Peter; 12.06.2019
comment
@PetroCliff Я признал, что это была ошибка, которую я тоже получал, когда сказал, что мы заметили, что наши сборки ломаются в Jenkins с этой ошибкой. Затем я начал объяснять, что ошибка вводила в заблуждение и что на самом деле ошибка была в surefire-reports. - person chizou; 24.06.2019

Отключите useSystemClassLoader maven-surefile-plugin, чтобы помочь

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.22.0</version>
    <configuration>
        <useSystemClassLoader>false</useSystemClassLoader>
    </configuration>
</plugin>
person Loi Cao    schedule 22.11.2018
comment
Это тот, который исправил это для меня. Я создавал maven через artifactory на образе докера, поставленном в очередь из gitlab. Было сложно заставить работать репрезентативную настройку, и после того, как мы попробовали множество вариантов надежных настроек, она исправила это с помощью версии 2.22.0. - person Richard Bown; 13.12.2018
comment
нужно добавить эту опцию для каждой работы maven в Gitlab CI и понятия не имею, почему. - person cljk; 05.01.2019

Просто столкнулся с той же проблемой, java 8 на ubuntu

затем наткнулся на https://stackoverflow.com/a/53016532/1676516

Похоже, это недавняя ошибка в плагине surefire версии 2.22.1 с https://issues.apache.org/jira/browse/SUREFIRE-1588.

следовал предлагаемому обходному пути через локальные настройки mvn ~/.m2/settings.xml

<profiles>
    <profile>
        <id>SUREFIRE-1588</id>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
        <properties>
            <argLine>-Djdk.net.URLClassPath.disableClassPathURLCheck=true</argLine>
        </properties>
    </profile>
</profiles>
person Mahmoud Said    schedule 05.11.2018
comment
Простое добавление более свежей версии 3.0.0-M1 (например) решило проблему. - person Galigator; 29.11.2018

Сегодня у меня была такая же проблема, и для меня настоящая проблема была отмечена в журнале с сообщением Cannot use a threadCount parameter less than 1; 1 > 0. При добавлении <threadCount>1</threadCount> в конфиг surefire-plugin другая ошибка исчезла.

Full plugin config:
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.18.1</version>
            <dependencies>
                <dependency>
                    <groupId>org.apache.maven.surefire</groupId>
                    <artifactId>surefire-junit47</artifactId>
                    <version>2.18.1</version>
                </dependency>
                <dependency>
                    <groupId>org.apache.maven.surefire</groupId>
                    <artifactId>surefire-testng</artifactId>
                    <version>2.18.1</version>
                </dependency>
            </dependencies>
            <configuration>
                <threadCount>1</threadCount>
            </configuration>
        </plugin>

... и да, я использую и junit, и testng в этой тестовой среде по причинам обратной совместимости.

person javabeangrinder    schedule 30.07.2015
comment
Это то, что у меня сработало. Я использую JUnit и TestNG для своего проекта (по той же причине), и установка threadCount помогла. - person Manan Shah; 07.10.2020

Я столкнулся с аналогичной проблемой после обновления до java 12, для меня решением было обновить версию jacoco <jacoco.version>0.8.3</jacoco.version>

person Maksim Vorontsov    schedule 06.11.2019
comment
Это действительно была проблема, с которой я столкнулся с моим проектом. Жаль, что этот ответ не так заметен ... - person OmriYaHoo; 06.01.2020

Версия 2.22.2 имеет реальные проблемы с разветвленными JVM. Используйте версию 2.20 - работает как шарм!


<groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
<version>2.20</version>
person Alex    schedule 06.01.2020
comment
Хм, это действительно помогает! - person Zhen Zhang; 02.03.2020
comment
Да, у v2.22.2 проблема с maven:3.6-jdk-8-alpine. Так раздражает! - person KimchiMan; 16.05.2020

Если кто-то включает настраиваемый аргумент argLine, вы должны пересмотреть его, потому что он, вероятно, является источником ваших проблем с распределением памяти.

Например (раньше у меня было):

<argLine>XX:MaxPermSize=4096m ${argLine}</argLine>

Теперь я использую жестко указанные значения:

<argLine>-Xmx1024m -XX:MaxPermSize=256m</argLine>

По какой-то причине приложения, которые интегрируются с Surefire, такие как Jacoco, не запрашивают достаточно памяти для сосуществования с тестированием, которое происходит во время сборки.

person Chad Van De Hey    schedule 12.08.2016

Была аналогичная проблема при запуске команды mvn с плагином Jacoco на JDK 1.8.0_ 65

[INFO]
A fatal error has been detected by the Java Runtime Environment:

JRE version: Java(TM) SE Runtime Environment (8.0_65-b17) (build 1.8.0_65-b17).........
Problematic frame:
PhaseIdealLoop::build_loop_late_post(Node*)+0x144
............
............
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.19:test (default-test) on project 

 The forked VM terminated without properly saying goodbye. VM crash or System.exit called?

Ошибка в JDK https://bugs.openjdk.java.net/browse/JDK-8081379

Решением было запустить mvn clean install с параметром -XX: -UseLoopPredicate.

Или просто обновите JDK (я думаю, что работает более новая младшая версия)

person andreyro    schedule 26.01.2017

Я встречал случай, когда ни один из предоставленных ответов не помогал решить проблему. Это было с устаревшим приложением, которое использует log4j и SLF4J / logback.

Предыдущая ситуация: сборки clean test работали нормально при запуске из Eclipse, но при запуске из командной строки возникла эта ошибка. CI строится на CircleCI тоже работает нормально.

Что я сделал: чисто догадываясь, настроил правильный logback-test.xml и уменьшил подробность ведения журнала. И вот, у меня больше не возникало этой ошибки, и теперь я могу собрать проект (а также модуль, в котором возникла эта ошибка) из командной строки.

Я хочу сказать, что то, как используются или настраиваются фреймворки журналирования, может быть другим объяснением.

Был ли это действительно конфликт между log4j и logback? Или все дело в том, что большой объем протоколирования, производимого тестами, каким-то образом переполнял буфер командной строки? Я не знаю. Для меня это остается загадкой.

person AbVog    schedule 06.08.2018
comment
Голосование за, потому что это действительно может решить / избежать / обойти проблему. Я использую slf4j и sl4j-simple в Windows, и медленный вывод тоже указал мне в этом направлении. Установка System.setProperty (SimpleLogger.DEFAULT_LOG_LEVEL_KEY, предупреждать); сделали свое дело. Понижение maven-surefire-plugin до 2.18.1 тоже сработало. - person marcus; 01.03.2019

Я столкнулся с этой проблемой также в контейнере Jenkins Docker (пробовал jenkins: lts, ​​jenkins, jenkins: slim и jenkins: slim-lts. Я не хотел просматривать все репозитории и обновлять pom для каждого проекта, поэтому я просто добавил disableClassPathURLCheck в вызов командной строки maven:

mvn test -DargLine="-Djdk.net.URLClassPath.disableClassPathURLCheck=true"
person Kevin Dubois    schedule 07.12.2018

Используя maven surefire 2.21.0, я решил проблему, изменив значение параметра reuseForks с true на false:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.21.0</version>
            <configuration>
                <reuseForks>false</reuseForks>
            </configuration>
        </plugin>
    </plugins>
</build>

Весь мой раздел конфигурации при сборке выглядел так:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.21.0</version>
            <configuration>
                <testFailureIgnore>true</testFailureIgnore>
                <skip>false</skip>
                <reuseForks>false</reuseForks>
                <argLine>-Xmx1024m -XX:MaxPermSize=256m</argLine>
                <argLine>-Dfile.encoding=UTF-8</argLine>
                <useSystemClassLoader>false</useSystemClassLoader>
                <includes>
                    <!--Test* classes for the app testing -->
                    <include>**/directory/Test*.java</include>
                </includes>
            </configuration>
        </plugin>
    </plugins>
</build>
person Csaki Istvan    schedule 20.02.2019

Похоже, это проблема синхронизации потоков на некоторых компьютерах с Windows. Если у вас возникла эта проблема с Windows, попробуйте перенаправить вывод в файл: mvn clean install > output.txt

person Scott Lindner    schedule 01.08.2020
comment
У вас есть источник этой проблемы? - person Arlzheim; 19.10.2020
comment
Это зависит от машины. В том же репо / ветке на другом компьютере проблема не будет отображаться. Серьезно старые, медленные и ограниченные машины более склонны к такому поведению. Похоже, что большие объемы джунита также демонстрируют такое поведение. Я не могу поделиться одним из моих репозиториев, в котором это показано, поскольку они находятся в частном и ограниченном пространстве. Если я найду публичный, я брошу его здесь. - person Scott Lindner; 20.10.2020
comment
Спасибо, было бы здорово :) - person Arlzheim; 29.10.2020
comment
это хороший ответ, он решит мою проблему - person Anh Thu; 07.05.2021

Вам нужно проверить, является ли ваша машина 64-битной или 32-битной. Если ваша машина 32-битная, то аргумент памяти не должен превышать 4096, даже если он должен быть меньше 4 ГБ. но если ваш компьютер 64-разрядный, установите 64-разрядную версию Java и укажите JAVA_HOME в mvn.bat, который указывает на установку 64-разрядной версии Java.

person Naresh Singh    schedule 16.02.2015

Недавно я столкнулся с этой ошибкой при создании контейнерных приложений jar с помощью Bamboo:

org.apache.maven.surefire.booter.SurefireBooterForkException: разветвленная виртуальная машина завершена без должного прощания

После многих часов исследований я исправил это. И я подумал, что будет полезно поделиться здесь своим решением.

Таким образом, ошибка возникает каждый раз, когда bamboo запускает команду mvn clean package для приложений Java в контейнерах докеров. Я не эксперт по Maven, но проблема была в плагинах Surefire и Junit4, включенных в spring -boot как зависимость от maven.

Чтобы исправить это, вам нужно заменить Junit4 на Junit5 и переопределить плагин Surefire в вашем pom.xml.

1.Исключение вставки зависимости от пружинной загрузки:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>
    <!-- FIX BAMBOO DEPLOY>
    <exclusions>
        <exclusion>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
        </exclusion>
    </exclusions>
    <!---->
</dependency>

2. Добавьте новые зависимости Junit5:

<dependency>
    <groupId>org.junit.jupiter</groupId>
    <artifactId>junit-jupiter-api</artifactId>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>org.junit.jupiter</groupId>
    <artifactId>junit-jupiter-engine</artifactId>
    <version>5.1.0</version>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>org.junit.vintage</groupId>
    <artifactId>junit-vintage-engine</artifactId>
    <version>5.1.0</version>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>org.junit.platform</groupId>
    <artifactId>junit-platform-launcher</artifactId>
    <version>1.1.0</version>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>org.junit.platform</groupId>
    <artifactId>junit-platform-runner</artifactId>
    <version>1.1.0</version>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>org.junit.platform</groupId>
    <artifactId>junit-platform-surefire-provider</artifactId>
    <version>1.1.0</version>
    <scope>test</scope>
</dependency>

3. Вставьте новый плагин в раздел плагинов.

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-failsafe-plugin</artifactId>
</plugin>
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.19.1</version>
    <dependencies>
        <dependency>
            <groupId>org.junit.platform</groupId>
            <artifactId>junit-platform-surefire-provider</artifactId>
            <version>1.1.0</version>
        </dependency>
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-engine</artifactId>
            <version>5.1.0</version>
        </dependency>
    </dependencies>
</plugin>

Этого должно быть достаточно для ремонта бамбуковых построек. Не забудьте также преобразовать все тесты Junit4 для поддержки Junit5.

person ripreal    schedule 27.06.2018

У меня была такая же проблема с Java 8 и Spring boot 5.2.7 (плагин включен, из коробки). Версия плагина по умолчанию (2.22.2). В моем случае проблемы возникали только на некоторых машинах в команде, а на других машинах все было нормально. Я предполагаю, что это как-то связано с количеством обнаруженных maven ядер.

Я исправил это с помощью этих настроек:

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <configuration>
                <reuseForks>false</reuseForks>
            </configuration>
        </plugin>

Я пробовал многие из предложенных подходов, но в моем случае ничего не работало.

Единственным недостатком этого решения является отключение повторного использования форков, и теперь тесты выполняются медленнее.

person Saša    schedule 30.10.2020
comment
Это не решает проблему - person mvb13; 06.01.2021
comment
Это исправило мою проблему. Однако это не может быть универсальным решением. Похоже, что одно и то же исключение выбрано для ряда аналогичных проблем. - person Saša; 06.01.2021
comment
Что ж, я больше не получаю ошибку, но моя сборка занимает как минимум в 10 раз больше времени. Я решил свою проблему, удалив для параметра logging.level.root значение OFF вместо DEBUG. Более конкретные уровни ведения журнала устанавливаются для отладки там, где они необходимы. - person Wesley De Keirsmaeker; 20.01.2021

Разветвленной JVM, использованной в тесте, не хватает памяти. Решением было бы либо отключить разветвление JVM и запустить тесты на основной JVM, чтобы убедиться, что у вас достаточно памяти, либо передать аргументы для увеличения памяти разветвленной JVM.

Ознакомьтесь с решением в этом ответе

person Muji    schedule 12.03.2019

Недавно у меня была такая же проблема в приложении, созданном JHipster 6.10.5 с использованием spring -boot 2.2.7.RELEASE и плагина maven surefire 3.0.0-M4. Это было вызвано тайм-аутом из-за очень длинного журнала тестирования. Это было решено добавлением следующего параметра конфигурации в maven-surefire-plugin в pom.xml (в разделе pluginManagement):

‹ForkedProcessExitTimeoutInSeconds› 1200 ‹/forkedProcessExitTimeoutInSeconds›

См. https://maven.apache.org/surefire/maven-surefire-plugin/test-mojo.html#forkedProcessExitTimeoutInSeconds

person fillumina    schedule 28.03.2021
comment
Это решило проблему для меня. В моем тесте было много вывода журнала. В этом разделе часто задаваемых вопросов указано, что если этот тайм-аут настигнет вас Появится сообщение об ошибке There was a timeout in the fork. Я не видел такого сообщения, но оно последовательно решает проблему в моем случае, увеличивая значение forkedProcessExitTimeoutInSeconds. Странный. Я использую surefire-plugin v2.22.2. - person peterh; 15.04.2021

Мое решение этой проблемы заключалось в том, чтобы закрыть чертов браузер Chrome, который забивал память моего компьютера ????

person Anand Rockzz    schedule 03.10.2018

Вы можете установить параметры Java

SET JAVA_OPTS='-Xmx1024m' XX:+UseLoopPredicate

mvn clean install

person abhimanyu    schedule 31.10.2018

Установка этого в pom.xml сработала для меня. Но вам следует проверить документацию на предмет других обходных путей https://maven.apache.org/surefire/maven-surefire-plugin/examples/class-loading.html

       <plugin>

            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <configuration>
                <!--these strange settings fixes a chrash and dumpstream from surefire when run from command line
                    Caused by: java.lang.ClassNotFoundException: org.apache.maven.surefire.booter.ForkedBooter
                -->
                <useSystemClassLoader>true</useSystemClassLoader>
                <useManifestOnlyJar>false</useManifestOnlyJar>
            </configuration>
        </plugin>
person Gryffe    schedule 11.11.2018

Я столкнулся с этой проблемой и в MacOS при удаленной отладке тестового кода Selenium на порту 5005. Проблема оказалась вызвана оставшейся запущенной surefire-forked-JVM. В выводе журнала в терминал Eclipse IDE не была выявлена ​​основная проблема, которая заключалась в адресе, который уже используется. Сообщение журнала отображалось только тогда, когда я запускал ту же команду в терминале MacOS, которую на самом деле пытался запустить Eclipse:

/bin/sh -c cd /path/to/your/project/directory && /Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home/jre/bin/java -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005 -jar /path/to/target/surefire/surefirebooter230340673926465933.jar /path/to/target/surefire 2019-06-28T10-50-02_140-jvmRun1 surefire6455775580414993159tmp surefire_02461993428448591420tmp

Устранение проблемы устранено с помощью убийства несанкционированного экземпляра JVM (ищите имя java-процесса в Activity Monitor). Кстати, я использую плагин surefire версии 2.21.0 без проблем с открытым jdk 8 (v1.8.0_212). Обратите внимание, что все пути будут специфичными для вашей среды сборки и, возможно, порта (адрес = 5005).

person Gregg Leichtman    schedule 28.06.2019

Я обновил плагин surefire следующим образом, и это решило мою проблему:

           <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.22.2</version>
                <configuration>
                    <argLine>-Xmx1024m -XX:MaxPermSize=256m</argLine>
                    <forkCount>1</forkCount>
                    <reuseForks>true</reuseForks>
                    <runOrder>alphabetical</runOrder>
                </configuration>
            </plugin>
person Arefe    schedule 29.06.2020

Я столкнулся с этой проблемой во время сборки Jenkins на машине Ubuntu.

/var/log/syslog сообщил Out of memory: Kill process 19557 (java) score 207 or sacrifice child.

Поэтому я дал машине Ubuntu больше места для подкачки. С тех пор проблема исчезла.

person Abdull    schedule 20.09.2016

Я столкнулся с той же проблемой, что и я пытался скомпилировать проект maven, установленный на 1.7 в среде Windows 10 с JAVA = 1.8.

Я решил это, изменив версию java с 1.7 на 1.8, как показано ниже.

 <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.3</version>
    <configuration>
      <source>1.8</source>
      <target>1.8</target>
    </configuration>
  </plugin>
person Dun0523    schedule 15.06.2018

В Windows (OpenJDK11, Maven 3.6.0, SUREFIRE 3.0.0-M1) я получил эту основную причину:

# Created at 2018-11-14T14:28:15.629
OpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x00000006c7500000, 522190848, 0) failed; error='The paging file is too small for this operation to complete' (DOS error/errno=1455)

и решается путем увеличения размера файла подкачки, например, как this.

person Radoslav Ivanov    schedule 16.11.2018
comment
В Linux (4.4.0-145-generic, amd64) изменился с Oracle JRE 8 на AdoptOpenJDK_8u202b08 для задания Jenkins, и он начал выдавать ошибку вилки: - Тест выполнения по умолчанию для цели org.apache.maven.plugins: maven- surefire-plugin: 2.19.1: test failed: разветвленная виртуальная машина завершила работу, не попрощавшись должным образом. Сбой виртуальной машины или вызов System.exit? - Снова переключился на Oracle JRE, и ошибка прекратилась. Это единственная работа (у нас примерно 300), у которой есть эта проблема. К счастью, это только внутренний проект, а не конечный результат для клиента, мы можем сохранить его на Sun / Oracle JRE. - person Robert; 25.06.2019

пробовал все выше, не сработало. ниже решение работает для меня:

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.19.1</version>
<configuration>
    <argLine>-Dfile.encoding=UTF-8</argLine>
</configuration>

person Yuebing Cao    schedule 20.11.2018
comment
Именно эта версия плагина меня порадовала. Моя конфигурация, кстати, такая: Apache Maven 3.6.0 (97c98ec64a1fdfee7767ce5ffb20918da4f719f3; 2018-10-24T21:41:47+03:00) Java version: 1.8.0_201, vendor: Oracle Corporation, runtime: C:\Program Files\Java\jdk1.8.0_201\jre Default locale: en_US, platform encoding: Cp1252 OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows" - person tworogue; 29.10.2019

У меня была такая же проблема, и я решил использовать Java 8 от Oracle вместо Java 10 от Openjdk.

person Francesco Borzi    schedule 23.11.2018

Я перепробовал все предоставленные решения (разветвление, системный загрузчик, больше памяти и т. Д.), Ничего не помогло.

Среда: сбой сборки в среде gitlab ci, сборка выполняется внутри контейнера докеров.

Решение. Мы использовали surefireplugin в версии 2.20.1, и обновление до 2.21.0 или выше (мы использовали 2.22.1) устранило проблему.

Причина: SUREFIRE-1422 - surefire использует команда ps, которая была недоступна в среде докеров и привела к "сбою". Эта проблема исправлена ​​в версии 2.21.0 или более поздней.

Благодаря этому ответу из другого вопроса: https://stackoverflow.com/a/50568662/2970422

person Joker    schedule 18.04.2019

У меня была ситуация, похожая на Чада, но я нашел другой ответ.

Согласно документации плагина, вы не может использовать ${...} в <argLine>, потому что Maven подберет это для замены раньше, чем это сделает плагин surefire (или любой другой).

Начиная с версии 2.17, плагин поддерживает @{...} вместо ${...} для замены свойств.

Так, например, замените это

<argLine>XX:MaxPermSize=1024m ${moreArgs}</argLine>

с этим

<argLine>XX:MaxPermSize=1024m @{moreArgs}</argLine>
person SOLO    schedule 02.12.2019

Я столкнулся с той же проблемой при запуске модульных тестов с использованием теста maven. Пытался изменить верные версии, но ничего не вышло. Наконец удалось решить следующее: РАНЬШЕ: (когда возникла проблема): javac из jdk 1.8 java указывал на java bin из jdk 1.11 CURRENT: (когда проблема решена): оба javac и java указывают на бины от jdk 1.8

С уважением, Тежа.

person teja    schedule 02.02.2020

эту ошибку я смог удалить после добавления профиля:

<profile>
            <id>surefire-windows-fork-disable</id>
            <activation>
                <os>
                    <family>Windows</family>
                </os>
            </activation>
            <build>
                <pluginManagement>
                    <plugins>
                        <plugin>
                            <groupId>org.apache.maven.plugins</groupId>
                            <artifactId>maven-surefire-plugin</artifactId>
                            <configuration>
                                <forkCount>0</forkCount>
                                <useSystemClassLoader>false</useSystemClassLoader>
                            </configuration>
                        </plugin>
                    </plugins>
                </pluginManagement>
            </build>
        </profile>

Кажется, что это проблема Windows в отношении вилок maven surefire

person ugurkocak1980    schedule 02.02.2021

У меня возникла эта ошибка после того, как статическая переменная-член в моем тестовом классе вызвала метод для создания объекта (который использовался в тестовых примерах по всему классу), и метод вызвал исключение.

// Object created inside test class by calling a static getter.
// Exception thrown in getter:
private static Object someObject = SomeObject.getObject(...);

// ... <Object later used in class>

Некоторые исправления включают воссоздание объекта внутри каждого тестового примера и, соответственно, перехват любых исключений. Или инициализировав объект внутри метода @BeforeTest и убедившись, что он построен правильно.

person user2812481    schedule 13.05.2015

В моем случае проблема была связана с очень длинным путем к рабочему пространству. Итак, я провел рефакторинг пути, и это решило проблему для меня.

person thiago-devel    schedule 23.02.2016
comment
Это было на машине с Windows? - person hithwen; 17.05.2016
comment
Да, он работает в Windows. - person thiago-devel; 17.05.2016
comment
Как вы это узнали? - person dzieciou; 06.06.2016

Когда я столкнулся с этой ошибкой, это было связано с тем, что мой ulimit для открытых файлов (ulimit -n) был слишком низким. Он (каким-то образом) был установлен только на 256:

% ulimit -n
256

Ошибка исчезла после того, как я увеличил лимит:

% ulimit -n 3072
% ulimit -n     
3072

Ваша система может не позволить установить такой высокий предел. например, это происходит, когда я пытаюсь использовать большее число:

% ulimit -n 3073
ulimit: setrlimit failed: invalid argument

Или это может быть ниже вашего существующего лимита, и вы можете столкнуться с другой основной причиной.

person erik.weathers    schedule 26.07.2016

В моем случае я забыл добавить зависимость в pom:

      <dependency>
          <groupId>org.aspectj</groupId>
          <artifactId>aspectjweaver</artifactId>
          <version>1.8.5</version>
      </dependency>

Просто убедитесь, что вы выбрали правильную версию (на сегодняшний день последняя версия 1.8.9)

person Martin Zehle    schedule 02.09.2016

Я тоже испытал это - но в моем случае я написал собственный крючок для огурца.

public class MappingFormatter implements gherkin.formatter.Formatter {

...

один из моих методов создавал исключение нулевого указателя, что приводило к завершению работы безотказной работы без регистрации ошибки.

person pbirnie    schedule 27.10.2016

Недавно трэвис прервал выполнение теста (не изменив ничего связанного (и успешных сборок на машинах разработчика!)), Таким образом, СБОЙ СБОРКИ. Одна из причин заключалась в следующем (см. Ответ @agudian):

Surefire не поддерживает тесты или какие-либо библиотеки, на которые есть ссылки, вызывающие System.exit () `

(поскольку тестовый класс действительно называется System.exit(-1)).

  1. Вместо этого помогает использование простого оператора return.

  2. Чтобы снова осчастливить Трэвиса, мне также пришлось добавить параметры уверенности (<argLine>), предоставленные @xiaohuo. (Кроме того, мне пришлось удалить -XX:MaxPermSize=256m, чтобы иметь возможность строить на одном из моих рабочих столов)

Выполнение только одного из двух действий не помогло.

Для получения дополнительной информации прочтите Когда нам следует вызывать System.exit в Java.

person dr0i    schedule 24.03.2017

Это также могло произойти из-за совершенно другой проблемы. Например, в моем случае наша сборка Jenkins периодически давала сбой при выполнении тестов без какой-либо причины.

Я просмотрел наши тесты, чтобы найти какое-либо появление System.exit(), но его не было.

После дополнительных поисков я обнаружил, что это могло произойти из-за ошибки JDK, которая могла вызвать эту регрессию.

JDK-6675699

Я все еще работаю над внесением этого исправления в наши сборки, вернусь и снова обновлю поток.

person SarZ    schedule 06.07.2017

Это может произойти из-за недостаточной памяти. Убедитесь, что у вас нет приложений, работающих в фоновом режиме во время работы mvn. В моем случае Firefox работал в фоновом режиме с большим использованием памяти.

person Sidath Bhanuka Randeniya    schedule 07.01.2018

Это определенно сработает .....

Добавьте следующие строки в файл POM и дайте сборку.

<plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>2.19.1</version>
          <configuration>
            <trimStackTrace>false</trimStackTrace>
            <includes>
              <include>**/*Test.class</include>
            </includes>
          </configuration>
        </plugin>
person sam    schedule 21.03.2018

В моем случае это был мой код, вызывающий System.exit (0).

Вот выдержка из документации te:

Surefire не поддерживает тесты или какие-либо библиотеки, на которые есть ссылки, вызывающие System.exit () в любое время. Если они это сделают, они несовместимы с Surefire, и вам, вероятно, следует сообщить о проблеме в библиотеку / поставщику.

person selman    schedule 28.03.2019

В моем случае помогло увеличение mem путем установки MAVEN_OPTS:

set MAVEN_OPTS=-Xmx1024m
person walkeros    schedule 13.11.2019

Я использовал имя папки как test & demo, поэтому возникла эта проблема (виртуальная машина завершилась без должного прощания. Сбой виртуальной машины или вызов System.exit), но когда я дал имя папки как test_demo затем он решил эту проблему. (эта проблема возникает в ОС Windows с символом "&".)

Заменить "&" на "_"

Эта проблема может быть вызвана специальным символом или лишним пробелом в имени папки.

person RANDHIR KUMAR    schedule 21.01.2020

У меня была такая же проблема в приложении, которое записывало много XML на консоль во время выполнения тестов. Я думаю, что проблема как-то связана с тем, как тестовая вилка отправляет журнал своей консоли в основной поток maven для вывода на экран.

Я обошел проблему, установив для регистрации нарушающего класса значение WARN в моем тестовом файле регистрации.

Например, logback-test.xml

<configuration debug="true">
  <include resource="org/springframework/boot/logging/logback/defaults.xml" />
  <include resource="org/springframework/boot/logging/logback/console-appender.xml" />

  <logger name="com.foo.ClassWithLotsOfXmlLogging" level="WARN" />

  <root level="INFO">
    <appender-ref ref="CONSOLE"/>
  </root>
</configuration>
person lance-java    schedule 30.09.2020

У меня было столько раз, и для меня это почти всегда связано с консолью и не имеет ничего общего с фактическим разветвлением.

Вкратце, мое решение:

  • Добавить -B (пакетный режим)
  • Добавить аргументы JVM -Djansi.force=true -Djansi.passthrough=true

В данном проекте это систематически не удавалось в новой консоли Windows (cmd.exe).

[path_to_jdk] \ java.exe -Dmaven.home = [path_to_maven] \ apache-maven-3.6.3 -Dclassworlds.conf = [path_to_maven] \ bin .. \ bin \ m2.conf -Dmaven.multiModuleProjectDirectory = [path_to_myproject] - Dfile.encoding = UTF-8 -Djansi.force = true -Djansi.passthrough = true -classpath [path_to_maven] \ boot \ plexus-classworlds-2.6.0.jar org.codehaus.plexus.classworlds.launcher.Launcher чистая установка - B

Это будет всегда работать в новом окне консоли (cmd.exe).

[path_to_jdk] \ java.exe -Dmaven.home = [path_to_maven] \ apache-maven-3.6.3 -Dclassworlds.conf = [path_to_maven] \ bin .. \ bin \ m2.conf -Dmaven.multiModuleProjectDirectory = [path_to_myproject] - Dfile.encoding = UTF-8 -Djansi.force = true -Djansi.passthrough = true -classpath [path_to_maven] \ boot \ plexus-classworlds-2.6.0.jar org.codehaus.plexus.classworlds.launcher.Launcher чистая установка - B

Обратите внимание, что обе команды имеют -B (пакетный режим, который должен отключать окраску), и единственная разница в том, что

-Djansi.force=true -Djansi.passthrough=true

Теперь мне просто нужно передать эти аргументы JVM в mvn.cmd, чтобы это было лучше.

Думаю, что-то вроде этого: Есть ли способ передать аргументы jvm через командную строку в maven?


Немного предыстории:

У меня неоднократно возникала эта проблема, начиная с последних версий maven (3.x +). Я пробовал многие из решений здесь, иногда с удачей, иногда нет.

Эта статья из официального документа всегда была бесполезной: https://maven.apache.org/surefire/maven-surefire-plugin/examples/class-loading.html

Но есть константы, когда я столкнулся с этой проблемой:

  • Всегда в окнах, локально
  • Всегда МНОГО консольного вывода.
  • Не все разработчики в команде получают ошибку в данном проекте.
  • Сборка Дженкинса пройдет
  • МНОГО выводов консоли в * IT-тесте (тесты отказоустойчивой интеграции)

Ключевым открытием было то, что я заметил, что в Eclipse (со встроенной версией maven или без нее) будет работать полная сборка maven (чистая установка).

Итак, я выяснил, какую команду использует Eclipse (спасибо: Как получить командную строку для конфигурации запуска Eclipse?)

Оттуда я смог определить, было ли решение.

Смотрите другой ответ там, где люди говорят

Там явно ошибка. Либо в Maven, либо в консоли Windows, либо в Jansi lib, либо при интеграции этих компонентов.

person Filip    schedule 25.03.2021

Простое решение: вы должны добавить src / test / resources / logback.xml

<configuration debug="false">
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
        <pattern>%date{HH:mm:ss.SSS} %highlight(%-5level)
            %gray(%logger{90}) %X{X-ApplicationId} %msg%n
        </pattern>
    </encoder>
</appender>
person Никита Верёвкин    schedule 26.03.2021

Мой сценарий

  • В моем тесте много журналов (и я имею в виду много!)
  • Плагин Surefire v2.22.2
  • Ошибка возникает только в среде IDE, а не в том случае, если команда mvn выполняется из командной строки.
  • нет никаких признаков .dump файлов из подключаемого модуля Surefire или традиционных hs_err аварийных файлов из двоичного кода Java.

Для меня в качестве решений последовательно работали две вещи (это альтернативы):

  1. Не использовать разветвление: установите свойство плагина Surefire forkcount = 0.
  2. увеличьте свойство плагина Surefire forkedProcessExitTimeoutInSeconds с 30 до 300 секунд. В документации плагина говорится, что если истечет этот тайм-аут вы увидите сообщение об ошибке There was a timeout in the fork. Я не видел такого сообщения об ошибке, но оно последовательно устраняет проблему, увеличивая значение тайм-аута.

Вы, вероятно, захотите использовать решение (2), поскольку желательно разветвление.

Почему?

Моя теория заключается в том, что если выводится много журнала, то при выключении вилки необходимо выполнить много обработки (в частности, если вы работаете в среде IDE, которая фиксирует вывод и, возможно, использует файлы с отображением памяти для своего содержимого окна). Вкратце: к моменту завершения теста еще остается много текста, ожидающего пересылки в вашу среду IDE. Кажется, 30-х годов для этого просто недостаточно.

Это также объясняет, почему одни разработчики видят проблему, а другие - нет. То, сколько обработки вывода осталось сделать на момент завершения теста, вероятно, зависит от мощности процессора, скорости диска и т. Д.

Если я прав в этом - не могу это доказать - тогда все предложения, такие как перенаправление вывода журнала и уменьшение уровня ведения журнала, ИМО лечит симптом, а не причину.

person peterh    schedule 15.04.2021

Со мной случилось: если ваш проект зависит от док-машины или / и базы данных для успешной сборки, пожалуйста, сначала проверьте, что ваш экземпляр db запущен, и ваш докер также работает, потому что, возможно, в фоновом режиме работают какие-то модульные тесты ... проверьте, что особенно после запуска вашего ноутбука .. надеюсь, что это может кому-то помочь

person m.irouch    schedule 28.04.2021

вы можете использовать команду ниже. Поскольку ваши модульные тесты нуждаются в разветвлении. Проблема с тем, что вы используете поток в своем модульном тесте.

mvn test -DforkCount=2

Надеюсь. Это полезно.

person salihgungor    schedule 16.07.2021

Возможно, это потому, что вы внесли некоторые изменения в свой проект и не обновили все ссылки.

В моем случае я получал эту ошибку, потому что я обновил имена пакетов в своем проекте, но я забыл обновить их ссылки в файле TestNG.xml. Исправив это, я решил эту ошибку.

person Chintan Patel    schedule 16.10.2014

«Вызвано: java.util.concurrent.ExecutionException: java.lang.RuntimeException: разветвленная виртуальная машина завершена без должного прощания. Произошел сбой виртуальной машины или вызов System.exit?»

Эта проблема может возникнуть, если вы используете несовместимую версию java. Like использует новую версию java, а код поддерживает другую версию.

person Al JN    schedule 24.04.2018

Разветвленная виртуальная машина закрылась, не попрощавшись должным образом. Сбой виртуальной машины или вызов System.exit

Способ предотвратить эту ошибку - запустить IDE от имени администратора.

person Juha Hanka    schedule 17.01.2017

для меня это сработало с

mvn clean install -DskipTests -e
person user3509467    schedule 17.12.2014
comment
Пропуск тестов - это способ скрыть проблему, а не исправить ее. - person om-nom-nom; 08.04.2015
comment
Обожаю его мысли :). Сделал мой день. - person sorrymissjackson; 07.10.2016