我正在使用带有Java 11的嵌入式PostgreSQL进行集成测试。在Windows上它运行良好,但在Mac上它首先下载Mac OS二进制文件(这是预期的(:
Extract /Users/fubar/.embedpostgresql/postgresql-11.1-1-osx-binaries.zip START
但随后它失败并出现以下堆栈跟踪:
java.lang.NoSuchFieldException: handle
at java.base/java.lang.Class.getDeclaredField(Class.java:2411)
at de.flapdoodle.embed.process.runtime.Processes.windowsProcessId(Processes.java:109)
at de.flapdoodle.embed.process.runtime.Processes.access$200(Processes.java:51)
at de.flapdoodle.embed.process.runtime.Processes$PidHelper$2.getPid(Processes.java:209)
当我查看源代码时Processes
我看到它在内部使用 PidHelper.LEGACY
,这在第一次尝试通过 unixLikeProcessId()
获取 pid 时失败。
任何人都可以提示为什么会发生这种情况或如何解决这个问题吗?
显示以下内容:
Possibly failed to run initdb:
initdb: invalid locale name "en-US"
所以initdb
失败了,PostgeSQL实例没有启动,也没有创建一个postmaster.pid
文件,这都导致了上面的错误。
问题出在通过 additionalInitDbParams=[--locale=en-US, -EUTF8]
配置的区域设置中。