Ошибка операционной системы: не удается прочитать файл в контексте: \? C:project.gradle6.6.1executionHistoryexecutionHistory.lock

#windows #docker #gradle #docker-compose

#Windows #docker #gradle #docker-compose

Вопрос:

У меня есть проект Gradle, и я использую docker в этом проекте. Когда я выполняю команду gradlew integrationTestDocker , я получаю сообщение об ошибке ниже. OSError: Can not read file in context: \?C:project.gradle6.6.1executionHistoryexecutionHistory.lock

Комментарии:

1. Здесь та же проблема. Это многопроектная сборка Gradle, не контейнерная и не использующая Docker. Та же версия Gradle. История выполнения файла. блокировка существует, и я могу открыть ее в редакторе (это двоичные данные), но Gradle пытается прочитать ее на 51% в моих тестах. Что-то связанное с ошибкой подписи класса. Происходит только в Windows (10) — все строится и работает нормально в Linux и macOS.

2. @user3562927 Похоже, что эта проблема возникает из-за дополнительных материалов, добавленных в path, если вы видите путь, он начинается с «\? «, что, я думаю, вызывает проблему. Не уверен, почему выполнение этих команд добавляет «\? » к пути.

3. @MoA \? Префикс указывает имя в пространстве имен Win32 , и в этом нет ничего плохого само по себе. Что вы получите, если откроете командную строку и запустите type \?C:project.gradle6.6.1executionHistoryexecutionHistory.lock в этот момент?

4. @dxiv Вы правы, когда я выполнил команду, она напечатала несколько символов на экране. С добавлением «\? » или без, результат был тот же.

Ответ №1:

Об этом сообщалось ранее в октябре 2018 года (выпуск 7043) и ноябре 2019 года (выпуск 11520)

В обоих случаях предлагалось добавить .gradle в .dockerignore , чтобы убедиться, что он не является частью docker build контекста.
Плюс этот комментарий:

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

Комментарии:

1. Спасибо @VonC я только что добавил .dockerignore файл в проект и добавил .gradle внутри этого файла. Это сработало!

2. Черт; Я назначил награду за этот вопрос, и ответ не решает это для меня, потому что моя проблема не связана с Docker. Та же проблема — не удается прочитать историю выполнения. блокировка во время выполнения тестов. Но не внутри контейнера. Думаю, я начну другую награду. Обратите внимание, что у меня уже был .gradle в .dockerignore, не то чтобы это имело значение, поскольку моя проблема не зависит от Docker.

3. @user3562927 Интересно. Я буду следить за вашей новой наградой.