【问题标题】:HTTP Status 500 - java.lang.NoClassDefFoundError: java/time/temporal/TemporalField when run app on OpenShiftHTTP 状态 500 - java.lang.NoClassDefFoundError: java/time/temporal/TemporalField 在 OpenShift 上运行应用程序时
【发布时间】:2016-03-15 10:04:23
【问题描述】:

我正在学习 RESTFUL Webservice,我正在 OpenShift 的免费主机上构建一个简单的应用程序

我在 OpenShift 上的服务器和数据库:jbossews-2.0 (Tomcat 7); postgresql-9.2 This is my Java build path This is my lib

当我在 localhost 测试时,我没有收到错误,但是当我在 OpenShift Host 上运行应用程序时,我在页面上看到:

HTTP Status 500 - java.lang.NoClassDefFoundError: java/time/temporal/TemporalField

type Exception report

message java.lang.NoClassDefFoundError: java/time/temporal/TemporalField

description The server encountered an internal error that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: java.lang.NoClassDefFoundError: java/time/temporal/TemporalField
    com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:420)
    com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:558)
    com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:733)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

root cause

java.lang.NoClassDefFoundError: java/time/temporal/TemporalField
    org.postgresql.jdbc.PgConnection.<init>(PgConnection.java:320)
    org.postgresql.Driver.makeConnection(Driver.java:406)
    org.postgresql.Driver.connect(Driver.java:274)
    java.sql.DriverManager.getConnection(DriverManager.java:571)
    java.sql.DriverManager.getConnection(DriverManager.java:215)
    service.TestService.main(TestService.java:126)
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    java.lang.reflect.Method.invoke(Method.java:606)
    com.sun.jersey.spi.container.JavaMethodInvokerFactory$1.invoke(JavaMethodInvokerFactory.java:60)
    com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$TypeOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:185)
    com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:75)
    com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:302)
    com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:108)
    com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)
    com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84)
    com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1542)
    com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1473)
    com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1419)
    com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1409)
    com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:409)
    com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:558)
    com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:733)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

root cause

java.lang.ClassNotFoundException: java.time.temporal.TemporalField
    org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1720)
    org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571)
    org.postgresql.jdbc.PgConnection.<init>(PgConnection.java:320)
    org.postgresql.Driver.makeConnection(Driver.java:406)
    org.postgresql.Driver.connect(Driver.java:274)
    java.sql.DriverManager.getConnection(DriverManager.java:571)
    java.sql.DriverManager.getConnection(DriverManager.java:215)
    service.TestService.main(TestService.java:126)
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    java.lang.reflect.Method.invoke(Method.java:606)
    com.sun.jersey.spi.container.JavaMethodInvokerFactory$1.invoke(JavaMethodInvokerFactory.java:60)
    com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$TypeOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:185)
    com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:75)
    com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:302)
    com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:108)
    com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)
    com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84)
    com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1542)
    com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1473)
    com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1419)
    com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1409)
    com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:409)
    com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:558)
    com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:733)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

PS:我在 WEB-INF 库中将文件 postgresql-9.4.1208.jar(用于 jdk 8)更改为 prostgresql-9.4.1208.jre7.jar(用于 jdk 7),现在一切正常。 非常感谢大家!玩得开心!!!

【问题讨论】:

  • 您使用的是哪个 jboss 墨盒?
  • java.time.temporal.TemporalField 确实存在自 Java 1.8 以来。

标签: java postgresql openshift


【解决方案1】:

根据Java docstime/temporal/TemporalField 是在 1.8 版中引入的

我创建了一个 Tomcat 7 (JBoss EWS 2.0) 墨盒并检查了版本:

$ ssh $MY_APP
$ java -version
java version "1.7.0_95"

【讨论】:

  • 是的,我也这么认为。但我找不到问题的解决方案:(((
【解决方案2】:

更改为 9.4.1208.jre7 解决了我的问题,似乎他们为 jdk8 编译了它

【讨论】:

    【解决方案3】:

    在我的例子中(SLES 11.3 上的 Tomcat 8),虽然我在没有卸载 Java 7 的情况下安装了 Java 8 SDK,并相应地设置了 JAVA_HOME,但 JRE_HOME 仍然指向我的 Java 7 安装。修复解决了问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-25
      • 1970-01-01
      相关资源
      最近更新 更多