java - 失败 - 上下文路径/ProjectName 中的应用程序无法启动(java.lang.UnsupportedClassVersionError)

标签 java tomcat

<分区>

我正在 tomcat7 服务器上部署我的项目,但遇到如上标题所述的错误。它显示异常如下:

Jul 13, 2017 10:24:48 AM org.apache.catalina.core.StandardContext filterStart
SEVERE: Exception starting filter naviox
java.lang.UnsupportedClassVersionError: org/survey/model/HomeProfile: Unsupported major.minor version 52.0 (unable to load class org.survey.model.HomeProfile)
    at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2892)
    at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1172)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1680)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1558)
    at org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl$AggregatedClassLoader.findClass(ClassLoaderServiceImpl.java:224)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:270)
    at org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl.classForName(ClassLoaderServiceImpl.java:242)
    at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.buildHibernateConfiguration(EntityManagerFactoryBuilderImpl.java:1136)
    at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl$4.perform(EntityManagerFactoryBuilderImpl.java:853)
    at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl$4.perform(EntityManagerFactoryBuilderImpl.java:850)
    at org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl.withTccl(ClassLoaderServiceImpl.java:425)
    at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:849)
    at org.hibernate.jpa.HibernatePersistenceProvider.createEntityManagerFactory(HibernatePersistenceProvider.java:75)
    at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:54)
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:55)
    at org.openxava.jpa.XPersistence.getEntityManagerFactory(XPersistence.java:197)
    at org.openxava.jpa.XPersistence.createManager(XPersistence.java:112)
    at org.openxava.component.parse.AnnotatedClassParser.obtainManagedClassNamesUsingJPA(AnnotatedClassParser.java:2740)
    at org.openxava.component.parse.AnnotatedClassParser.getManagedClassNames(AnnotatedClassParser.java:2655)
    at com.openxava.naviox.impl.BaseAllModulesNamesProvider.getAllModulesNames(BaseAllModulesNamesProvider.java:19)
    at com.openxava.naviox.impl.AllModulesNamesProvider.getAllModulesNames(AllModulesNamesProvider.java:14)
    at com.openxava.naviox.impl.MetaModuleFactory.createAll(MetaModuleFactory.java:27)
    at com.openxava.naviox.impl.DB.createModules(DB.java:127)
    at com.openxava.naviox.impl.DB.populateDB(DB.java:83)
    at com.openxava.naviox.impl.DB.populateDB(DB.java:75)
    at com.openxava.naviox.impl.DB.init(DB.java:27)
    at com.openxava.naviox.Modules.init(Modules.java:39)
    at com.openxava.naviox.web.NaviOXFilter.init(NaviOXFilter.java:22)
    at org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:281)
    at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:262)
    at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:107)
    at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4746)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5399)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    at org.apache.catalina.manager.ManagerServlet.start(ManagerServlet.java:1256)
    at org.apache.catalina.manager.HTMLManagerServlet.start(HTMLManagerServlet.java:714)
    at org.apache.catalina.manager.HTMLManagerServlet.doPost(HTMLManagerServlet.java:219)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.catalina.filters.CsrfPreventionFilter.doFilter(CsrfPreventionFilter.java:213)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.catalina.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:108)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:581)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:947)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1009)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:744)

我是新手。是jdk版本不同导致的异常吗?我使用的是 jdk 1.8,我部署到的文件夹使用的是 jdk 1.7。如果是这样,我该如何解决错误?

请帮忙。提前致谢。

最佳答案

您的错误是因为将源代码编译为类的 JDK 版本与尝试运行它的 JRE 版本不同。

高版本JRE可以运行低版本JDK编译的类,低版本JRE不能运行高版本编译的类

换句话说,Java 只是向后兼容,这是有道理的。

它会导致与您遇到的错误相同的错误。

如果您的老板告诉您使用 Java 7,您可以选择 3 个选项。

  1. 不要使用它并向他解释不再支持 Java 7https://java.com/en/download/faq/java_7.xml
  2. 使用 Java 7 运行和编译代码。
  3. 如果您有在更高版本的 JDK 中编译的第三方库,或者如果您有使用 Java 8 功能的源代码,则第二个选项将不起作用。第三方库问题可以通过导入在旧版本 JDK 中编译的库版本来解决,或者如果您可以访问源代码,则可以自己为旧版本编译它。如果您已经在使用 Java 8 的功能,那么您将必须使用 Javac 中的 sourcetarget 选项进行编译,以使用更高的 Java 编译源代码Java 低版本类文件的特性。

它看起来像下面这样。

javac -source 1.8 -target 1.7 HelloWorld.java

关于java - 失败 - 上下文路径/ProjectName 中的应用程序无法启动(java.lang.UnsupportedClassVersionError),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45070589/

相关文章:

java - 让java启动更快

java - 获取高阶函数中函数参数的名称

java - 测试 Spring bean 时模拟配置属性

scala - cloudbees+lift 应用程序 = 损坏的导航

java - 集群上的 Tomcat 7.0.47 session 复制问题

java - Tomcat 推送到 Java 客户端

java - 在android studio上编译时出现错误(1,1)非法字符 '\ufeff'

java - Ant taskdef - 需要类路径和 -lib 参数?

java - 64位的java可以和32位的tomcat一起使用吗

linux - 无法从外部连接到tomcat