有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何修复运行gradle的docker容器中的Unicode字符分辨率?

我试图使用gradle在容器中运行hibernate核心java测试。我在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...

此处预期和实际之间的差异是文件。编码


共 (1) 个答案

  1. # 1 楼答案

    您需要在容器中通过

    $ locale-gen en_IN.utf-8

    然后更改env var的值$LANG

    $ export LANG=en_US