Как исправить разрешение символов Unicode в Docker-контейнере, запущенном Gradle? - PullRequest
0 голосов
/ 20 мая 2019

Я пытался запустить java-тесты ядра hibernate внутри контейнера, используя gradle. Я получаю эту ошибку во время gradlew test.

Task :hibernate-core:compileTestJava FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Failed to capture fingerprint of input files for task     ':hibernate-core:compileTestJava' property 'source' during up-to-date check.
> Failed to create MD5 hash for file '/hibernate-orm/hibernate-core/src/test/java/org/    hibernate/internal/util/hib3rnat3/C0nst4nts???.java' as it does not exist.

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug     option to get more log output. Run with --scan to get full insights.

Как мне решить эту проблему?

Фактическое имя файла: /hibernate-orm/hibernate-core/src/test/java/org/hibernate/internal/util/hib3rnat3/C0nst4nts३.java Так что проблема, я думаю, может быть связана с проблемой кодировки имени файла, и она не может разрешить символ и, следовательно, ошибку.

Я думаю, что могу исключить возможность использования ? в качестве подстановочного знака, поскольку md5sum отлично с ним работает. По крайней мере, у bash с этим нет проблем, возможно, у gradle.

root@9eec67a60ee5:/hibernate-orm/hibernate-core# md5sum /hibernate-orm/hibernate-core/src/test/java/org/hibernate/internal/util/hib3rnat3/C0nst4nts???.java 
c2474fdef0224623dccd2615049b2bc8  /hibernate-orm/hibernate-core/src/test/java/org/hibernate/internal/util/hib3rnat3/C0nst4nts३.java

Другое различие между журналами на хосте и в контейнере:

At least one daemon option is different.
Wanted: DefaultDaemonContext[uid=null,javaHome=/jvm/jdk1.8.0_211,daemonRegistryDir=/root/.gradle/daemon,pid=10183,idleTimeout=null,daemonOpts=-XX:+HeapDumpOnOutOfMemoryError,-Xmx1024m,-Dfile.encoding=US-ASCII,-Duser.country=US,-Duser.language=en,-Duser.variant]
Actual: DefaultDaemonContext[uid=4e16e139-fd03-47b2-95b4-92da7853825f,javaHome=/jvm/jdk1.8.0_211,daemonRegistryDir=/root/.gradle/daemon,pid=9578,idleTimeout=10800000,daemonOpts=-XX:+HeapDumpOnOutOfMemoryError,-Xmx1024m,-Dfile.encoding=utf-24,-Duser.country=US,-Duser.language=en,-Duser.variant]

Looking for a different daemon...

Разница между ожидаемым и фактическим значением здесь - это file.encoding.

1 Ответ

0 голосов
/ 20 мая 2019

Вам нужно сгенерировать локаль, такую ​​как en_US.UTF-8 внутри контейнера, по

$ locale-gen en_IN.utf-8

и затем измените значение env var $LANG

$ export LANG=en_US

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...