Exception in thread "main" java.lang.NoClassDefFoundError: Could not initialize class sun.util.calendar.ZoneInfoFile
Exception in thread "main" java.lang.NoClassDefFoundError: Could not initialize class sun.util.calendar.ZoneInfoFile
当我尝试使用命令 systemctl start elasticsearch.service
启动 elasticsearch-6.8.20 时,我 运行 进入了这个异常
Starting Elasticsearch...
systemd[1]: Started Elasticsearch.
elasticsearch[71380]: Exception in thread "main" java.lang.NoClassDefFoundError: Could not initialize class sun.util.calendar.ZoneInfoFile
elasticsearch[71380]: #011at sun.util.calendar.ZoneInfo.getTimeZone(ZoneInfo.java:589)
elasticsearch[71380]: #011at java.util.TimeZone.getTimeZone(TimeZone.java:560)
elasticsearch[71380]: #011at java.util.TimeZone.setDefaultZone(TimeZone.java:666)
elasticsearch[71380]: #011at java.util.TimeZone.getDefaultRef(TimeZone.java:636)
elasticsearch[71380]: #011at java.util.TimeZone.getDefault(TimeZone.java:625)
elasticsearch[71380]: #011at java.text.SimpleDateFormat.initializeCalendar(SimpleDateFormat.java:657)
elasticsearch[71380]: #011at java.text.SimpleDateFormat.<init>(SimpleDateFormat.java:601)
elasticsearch[71380]: #011at java.text.SimpleDateFormat.<init>(SimpleDateFormat.java:580)
elasticsearch[71380]: #011at org.apache.logging.log4j.status.StatusData.getFormattedStatus(StatusData.java:122)
elasticsearch[71380]: #011at org.apache.logging.log4j.status.StatusConsoleListener.log(StatusConsoleListener.java:81)
elasticsearch[71380]: #011at org.apache.logging.log4j.status.StatusLogger.logMessage(StatusLogger.java:278)
elasticsearch[71380]: #011at org.apache.logging.log4j.spi.AbstractLogger.tryLogMessage(AbstractLogger.java:2170)
elasticsearch[71380]: #011at org.apache.logging.log4j.spi.AbstractLogger.logMessageTrackRecursion(AbstractLogger.java:2125)
elasticsearch[71380]: #011at org.apache.logging.log4j.spi.AbstractLogger.logMessageSafely(AbstractLogger.java:2108)
elasticsearch[71380]: #011at org.apache.logging.log4j.spi.AbstractLogger.logMessage(AbstractLogger.java:2002)
elasticsearch[71380]: #011at org.apache.logging.log4j.spi.AbstractLogger.logIfEnabled(AbstractLogger.java:1974)
elasticsearch[71380]: #011at org.apache.logging.log4j.spi.AbstractLogger.error(AbstractLogger.java:741)
elasticsearch[71380]: #011at org.apache.logging.log4j.core.pattern.PatternParser.createConverter(PatternParser.java:592)
elasticsearch[71380]: #011at org.apache.logging.log4j.core.pattern.PatternParser.finalizeConverter(PatternParser.java:639)
elasticsearch[71380]: #011at org.apache.logging.log4j.core.pattern.PatternParser.parse(PatternParser.java:415)
elasticsearch[71380]: #011at org.apache.logging.log4j.core.pattern.PatternParser.parse(PatternParser.java:177)
elasticsearch[71380]: #011at org.apache.logging.log4j.core.layout.PatternLayout$SerializerBuilder.build(PatternLayout.java:377)
elasticsearch[71380]: #011at org.apache.logging.log4j.core.layout.PatternLayout.<init>(PatternLayout.java:129)
elasticsearch[71380]: #011at org.apache.logging.log4j.core.layout.PatternLayout.<init>(PatternLayout.java:59)
elasticsearch[71380]: #011at org.apache.logging.log4j.core.layout.PatternLayout$Builder.build(PatternLayout.java:660)
elasticsearch[71380]: #011at org.apache.logging.log4j.core.config.AbstractConfiguration.setToDefault(AbstractConfiguration.java:584)
elasticsearch[71380]: #011at org.apache.logging.log4j.core.config.AbstractConfiguration.doConfigure(AbstractConfiguration.java:560)
elasticsearch[71380]: #011at org.apache.logging.log4j.core.config.AbstractConfiguration.initialize(AbstractConfiguration.java:238)
elasticsearch[71380]: #011at org.apache.logging.log4j.core.config.builder.impl.DefaultConfigurationBuilder.build(DefaultConfigurationBuilder.java:204)
elasticsearch[71380]: #011at org.apache.logging.log4j.core.config.builder.impl.DefaultConfigurationBuilder.build(DefaultConfigurationBuilder.java:161)
elasticsearch[71380]: #011at org.apache.logging.log4j.core.config.builder.impl.DefaultConfigurationBuilder.build(DefaultConfigurationBuilder.java:57)
elasticsearch[71380]: #011at org.elasticsearch.common.logging.LogConfigurator.configureStatusLogger(LogConfigurator.java:250)
elasticsearch[71380]: #011at org.elasticsearch.common.logging.LogConfigurator.configure(LogConfigurator.java:166)
elasticsearch[71380]: #011at org.elasticsearch.common.logging.LogConfigurator.configure(LogConfigurator.java:127)
elasticsearch[71380]: #011at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:302)
elasticsearch[71380]: #011at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:159)
elasticsearch[71380]: #011at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:150)
elasticsearch[71380]: #011at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:86)
elasticsearch[71380]: #011at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:124)
elasticsearch[71380]: #011at org.elasticsearch.cli.Command.main(Command.java:90)
elasticsearch[71380]: #011at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:116)
elasticsearch[71380]: #011at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:93)
systemd[1]: elasticsearch.service: Main process exited, code=exited, status=1/FAILURE
systemd[1]: elasticsearch.service: Failed with result 'exit-code'.
该服务未在配置文件 elasticsearch.yml 中定义的路径下记录。
知道可能是什么原因吗?我正在使用 openjdk 版本“1.8.0_312”和 Red Hat 版本 8.3
根据 java.lang.NoClassDefFoundError: Could not initialize class XXX,问题可能与 ZoneInfoFile.java
的静态初始化程序有关。
我的建议是在服务器中创建一个使用 ZoneInfoFile
和 运行 的简单 class,以找出无法初始化此 class 的原因。
import sun.util.calendar.ZoneInfoFile;
public class TestInitZoneInfoFile {
public static void main(String[] args) {
ZoneInfoFile.getZoneInfo("dummy");
}
}
我找到问题了。 OpenJDK 安装中缺少 TimeZone 依赖项:符号 link $JAVA_HOME/jre/lib/tzdb.dat -> /usr/share/javazi-1.8/tzdb.dat
指向一个空目录。我下载了 rpm 文件 tzdata-java-2021c-1.el8.noarch.rpm 并使用以下命令安装:
rpm -ivh tzdata-java-2021c-1.el8.noarch.rpm
现在一切正常。
当我尝试使用命令 systemctl start elasticsearch.service
Starting Elasticsearch...
systemd[1]: Started Elasticsearch.
elasticsearch[71380]: Exception in thread "main" java.lang.NoClassDefFoundError: Could not initialize class sun.util.calendar.ZoneInfoFile
elasticsearch[71380]: #011at sun.util.calendar.ZoneInfo.getTimeZone(ZoneInfo.java:589)
elasticsearch[71380]: #011at java.util.TimeZone.getTimeZone(TimeZone.java:560)
elasticsearch[71380]: #011at java.util.TimeZone.setDefaultZone(TimeZone.java:666)
elasticsearch[71380]: #011at java.util.TimeZone.getDefaultRef(TimeZone.java:636)
elasticsearch[71380]: #011at java.util.TimeZone.getDefault(TimeZone.java:625)
elasticsearch[71380]: #011at java.text.SimpleDateFormat.initializeCalendar(SimpleDateFormat.java:657)
elasticsearch[71380]: #011at java.text.SimpleDateFormat.<init>(SimpleDateFormat.java:601)
elasticsearch[71380]: #011at java.text.SimpleDateFormat.<init>(SimpleDateFormat.java:580)
elasticsearch[71380]: #011at org.apache.logging.log4j.status.StatusData.getFormattedStatus(StatusData.java:122)
elasticsearch[71380]: #011at org.apache.logging.log4j.status.StatusConsoleListener.log(StatusConsoleListener.java:81)
elasticsearch[71380]: #011at org.apache.logging.log4j.status.StatusLogger.logMessage(StatusLogger.java:278)
elasticsearch[71380]: #011at org.apache.logging.log4j.spi.AbstractLogger.tryLogMessage(AbstractLogger.java:2170)
elasticsearch[71380]: #011at org.apache.logging.log4j.spi.AbstractLogger.logMessageTrackRecursion(AbstractLogger.java:2125)
elasticsearch[71380]: #011at org.apache.logging.log4j.spi.AbstractLogger.logMessageSafely(AbstractLogger.java:2108)
elasticsearch[71380]: #011at org.apache.logging.log4j.spi.AbstractLogger.logMessage(AbstractLogger.java:2002)
elasticsearch[71380]: #011at org.apache.logging.log4j.spi.AbstractLogger.logIfEnabled(AbstractLogger.java:1974)
elasticsearch[71380]: #011at org.apache.logging.log4j.spi.AbstractLogger.error(AbstractLogger.java:741)
elasticsearch[71380]: #011at org.apache.logging.log4j.core.pattern.PatternParser.createConverter(PatternParser.java:592)
elasticsearch[71380]: #011at org.apache.logging.log4j.core.pattern.PatternParser.finalizeConverter(PatternParser.java:639)
elasticsearch[71380]: #011at org.apache.logging.log4j.core.pattern.PatternParser.parse(PatternParser.java:415)
elasticsearch[71380]: #011at org.apache.logging.log4j.core.pattern.PatternParser.parse(PatternParser.java:177)
elasticsearch[71380]: #011at org.apache.logging.log4j.core.layout.PatternLayout$SerializerBuilder.build(PatternLayout.java:377)
elasticsearch[71380]: #011at org.apache.logging.log4j.core.layout.PatternLayout.<init>(PatternLayout.java:129)
elasticsearch[71380]: #011at org.apache.logging.log4j.core.layout.PatternLayout.<init>(PatternLayout.java:59)
elasticsearch[71380]: #011at org.apache.logging.log4j.core.layout.PatternLayout$Builder.build(PatternLayout.java:660)
elasticsearch[71380]: #011at org.apache.logging.log4j.core.config.AbstractConfiguration.setToDefault(AbstractConfiguration.java:584)
elasticsearch[71380]: #011at org.apache.logging.log4j.core.config.AbstractConfiguration.doConfigure(AbstractConfiguration.java:560)
elasticsearch[71380]: #011at org.apache.logging.log4j.core.config.AbstractConfiguration.initialize(AbstractConfiguration.java:238)
elasticsearch[71380]: #011at org.apache.logging.log4j.core.config.builder.impl.DefaultConfigurationBuilder.build(DefaultConfigurationBuilder.java:204)
elasticsearch[71380]: #011at org.apache.logging.log4j.core.config.builder.impl.DefaultConfigurationBuilder.build(DefaultConfigurationBuilder.java:161)
elasticsearch[71380]: #011at org.apache.logging.log4j.core.config.builder.impl.DefaultConfigurationBuilder.build(DefaultConfigurationBuilder.java:57)
elasticsearch[71380]: #011at org.elasticsearch.common.logging.LogConfigurator.configureStatusLogger(LogConfigurator.java:250)
elasticsearch[71380]: #011at org.elasticsearch.common.logging.LogConfigurator.configure(LogConfigurator.java:166)
elasticsearch[71380]: #011at org.elasticsearch.common.logging.LogConfigurator.configure(LogConfigurator.java:127)
elasticsearch[71380]: #011at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:302)
elasticsearch[71380]: #011at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:159)
elasticsearch[71380]: #011at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:150)
elasticsearch[71380]: #011at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:86)
elasticsearch[71380]: #011at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:124)
elasticsearch[71380]: #011at org.elasticsearch.cli.Command.main(Command.java:90)
elasticsearch[71380]: #011at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:116)
elasticsearch[71380]: #011at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:93)
systemd[1]: elasticsearch.service: Main process exited, code=exited, status=1/FAILURE
systemd[1]: elasticsearch.service: Failed with result 'exit-code'.
该服务未在配置文件 elasticsearch.yml 中定义的路径下记录。 知道可能是什么原因吗?我正在使用 openjdk 版本“1.8.0_312”和 Red Hat 版本 8.3
根据 java.lang.NoClassDefFoundError: Could not initialize class XXX,问题可能与 ZoneInfoFile.java
的静态初始化程序有关。
我的建议是在服务器中创建一个使用 ZoneInfoFile
和 运行 的简单 class,以找出无法初始化此 class 的原因。
import sun.util.calendar.ZoneInfoFile;
public class TestInitZoneInfoFile {
public static void main(String[] args) {
ZoneInfoFile.getZoneInfo("dummy");
}
}
我找到问题了。 OpenJDK 安装中缺少 TimeZone 依赖项:符号 link $JAVA_HOME/jre/lib/tzdb.dat -> /usr/share/javazi-1.8/tzdb.dat
指向一个空目录。我下载了 rpm 文件 tzdata-java-2021c-1.el8.noarch.rpm 并使用以下命令安装:
rpm -ivh tzdata-java-2021c-1.el8.noarch.rpm
现在一切正常。