Я пытаюсь переместить одну из наших систем из java 8 в java 9, и примерно одна треть модульных тестов, которые работали нормально в java 8, завершается с ошибкой ниже:
java.io.IOException: Can not attach to current VM
Google взялЯ на несколько страниц, и я быстро понял, что в java 9 поведение по умолчанию было изменено, чтобы предотвратить подключение к текущей виртуальной машине и вернуться к старому способу, вам нужно установить системное свойство jdk.attach.allowAttachSelf
в true.
При настройке в интелий тесты работают нормально.То же самое работает при изменении build.gradle, чтобы включить это:
test {
jvmArgs '-Djdk.attach.allowAttachSelf=true'
}
Однако я бы предпочел иметь этот параметр глобально, поэтому мне не нужно взламывать мои build.gradle и intelij.
Я использую java 9 в Ubuntu, и я изменил /etc/profile.d/jdk.sh
, чтобы включить это:
export JDK_JAVA_OPTIONS="-Djdk.attach.allowAttachSelf=true"
При запуске сборки Gradle я вижу, что настройка выбрана, потому что я получаю ниже в выводе сборки:
NOTE: Picked up JDK_JAVA_OPTIONS: -Djdk.attach.allowAttachSelf=true
Однако тесты продолжают давать сбой с тем же IOException.
Итак, что я делаю не так и как мне это исправить.
Заранее спасибо заваши входы.