首页 > 解决方案 > java.lang.NoClassDefFoundError:无法初始化类 sun.text.normalizer.NormalizerImpl

问题描述

我在运行 oracle jdk 1.8.0_221 (64Bit) 的 wildfly 13 服务器上遇到以下错误。NormalizerImpl 是 rt.jar 中的一个类,应该始终可用。所以这不是普通的 ClassNotFound。

> 2019-07-25 13:56:38,914 ERROR [io.undertow.request] (default task-20)
> UT005023: Exception handling request to
> /myServletPath:
> java.lang.NoClassDefFoundError: Could not initialize class
> sun.text.normalizer.NormalizerImpl    at
> java.text.RBTableBuilder.build(RBTableBuilder.java:107)   at
> java.text.RBCollationTables.<init>(RBCollationTables.java:83)     at
> java.text.RuleBasedCollator.<init>(RuleBasedCollator.java:300)    at
> java.text.RuleBasedCollator.<init>(RuleBasedCollator.java:281)    at
> sun.util.locale.provider.CollatorProviderImpl.getInstance(CollatorProviderImpl.java:106)
>   at java.text.Collator.getInstance(Collator.java:242)

或类似的

java.lang.NoClassDefFoundError: Could not initialize class sun.text.normalizer.NormalizerImpl
    at sun.text.normalizer.NormalizerBase.isNormalized(NormalizerBase.java:1671)
    at sun.text.normalizer.NormalizerBase.isNormalized(NormalizerBase.java:1652)
    at java.text.Normalizer.isNormalized(Normalizer.java:177)

我用谷歌搜索了它,但没有发现太多,奇怪的是,在 SO 上什么也没有;-)

标签: javajava-8wildflynoclassdeffounderror

解决方案


我刚刚发现的一个提示是

(1)

当无法打开 JVM jar 文件 resources.jar 导致类 sun.text.normalizer.NormalizerImpl 初始化期间失败并因此引发 java.lang.NoClassDefFoundError 时,会发生该错误。问题很可能是连接用户对 JVM 目录的权限不正确。它可以通过授予组和其他人的读取权限来解决:drwxr-xr-x。

(2) 或者他们重新启动...


推荐阅读