jdk 和 jre 的类路径问题?

  • 本文关键字:路径 问题 jre jdk java
  • 更新时间 :
  • 英文 :


我有一些问题,比如java.lang.NoClassDefFoundError: Could not initialize class java.time.zone.ZoneRulesProvider

java.lang.NoClassDefFoundError: Could not initialize class java.time.zone.ZoneRulesProvider
java.time.ZoneRegion.ofId(ZoneRegion.java:120)
java.time.ZoneId.of(ZoneId.java:411)
java.time.ZoneId.of(ZoneId.java:359)
java.time.ZoneId.of(ZoneId.java:315)
java.util.TimeZone.toZoneId(TimeZone.java:556)
com.impossibl.postgres.system.BasicContext.updateSystemParameter(BasicContext.java:824)
com.impossibl.postgres.system.BasicContext.access$000(BasicContext.java:103)
com.impossibl.postgres.system.BasicContext$ServerConnectionListener.parameterStatusChanged(BasicContext.java:128)
java.util.HashMap.forEach(HashMap.java:1280)
com.impossibl.postgres.protocol.v30.ServerConnectionFactory.connect(ServerConnectionFactory.java:240)
com.impossibl.postgres.protocol.v30.ServerConnectionFactory.connect(ServerConnectionFactory.java:158)
com.impossibl.postgres.protocol.v30.ServerConnectionFactory.connect(ServerConnectionFactory.java:139)
com.impossibl.postgres.system.BasicContext.<init>(BasicContext.java:213)
com.impossibl.postgres.jdbc.PGDirectConnection.<init>(PGDirectConnection.java:233)
com.impossibl.postgres.jdbc.ConnectionUtil.createConnection(ConnectionUtil.java:317)
com.impossibl.postgres.jdbc.AbstractDataSource.createConnection(AbstractDataSource.java:142)
com.impossibl.postgres.jdbc.PGDataSource.getConnection(PGDataSource.java:71)
com.impossibl.postgres.jdbc.PGDataSource.getConnection(PGDataSource.java:63)
msms.ListenNotify.<init>(ListenNotify.java:71)
msms.HelloWorldServlet.doGet(HelloWorldServlet.java:37)
javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

设置PATH=/opt/java/jdk1.8.0_91/jre/binJAVA_HOME=/opt/java/jdk1.8.0_91/jre.是好的风格遵循。?

PATH=/opt/java/jdk1.8.0_91/bin一样,似乎没有任何ZoneRulesProvider的问题。

我更喜欢选择哪种方式,让我知道设置 env 变量的最佳和首选样式。?

NoClassDefFoundError 的明显原因是某个特定的类在 Classpath 中不可用,因此您需要将其添加到 Classpath 中,或者您需要检查为什么它在 Classpath 中不可用,如果您期望它可用。可能有多种原因,例如:

  1. 该类在 Java 类路径中不可用。

  2. 您可能正在使用 jar 命令运行程序,并且清单文件的 ClassPath 属性中未定义类。

  3. 任何启动脚本都将覆盖类路径环境变量。

  4. 因为NoClassDefFoundError是java.lang.LinkageError的一个子类,所以如果其中一个依赖项(如本机库)可能不可用,它也会出现。

  5. 检查日志文件中的 java.lang.ExceptionInInitializerError 。由于静态初始化失败而导致的NoClassDefFoundError是很常见的。

  6. 如果你在 J2EE 环境中工作,那么类在多个类加载器中的可见性也会导致 java.lang.NoClassDefFoundError,

只需尝试使用显式 -classpath 选项运行您认为有效的类路径,如果它有效,那么这是一个明确的简短迹象,表明有人正在覆盖 java 类路径。

如果您可以发布整个堆栈跟踪,我可以帮助您识别此错误的 RCA

最新更新