0

내가 알 수있는 모든 게시물을 읽었지만이 오류를 지나면 내 maven spring mvc web을 가져올 수 없습니다. 응용 프로그램 작동. localhost 또는 내 컨트롤러에 지정된 임의의 URI를 방문하면 HTTP 상태 500이 표시됩니다.수정 문제 java.lang.UnsupportedClassVersionError : 지원되지 않는 major.minor 버전 52

제 생각에 런타임시 사용한 것보다 높은 JDK가 컴파일 타임에 사용 되었기 때문에이 문제가 발생합니다. 하지만 JDK 또는 JRE에 대한 모든 참조가 제 경우와 같습니다. 내가 자바 1.8를 사용하고있을 필요가 나타납니다이 스택 오버 플로우 포스트에 따르면 (1.8), 그래서 문제가 무엇인지 확실하지 않다 : 내가 찍은

How to fix java.lang.UnsupportedClassVersionError: Unsupported major.minor version

단계

내 pom.xml 파일이 Java 1.8을 참조하는지 확인했습니다. intellij에서 : 컴파일러 설정에서 대상 바이트 코드 버전을 1.8로 설정했습니다. Maven 설정에서 가져 오기 도구의 JDK는 러너와 마찬가지로 java 1.8로 설정됩니다. 프로젝트 구조에서 프로젝트 SDK는 Java 1.8으로 설정되고 프로젝트 언어 수준은 8로 설정됩니다. java.com을 확인하고 Internet Explorer에서 실행중인 Java 버전이 JDK 및 JRE와 동일한 버전 1.8임을 확인했습니다. 또한 내 컴퓨터의 PATH 변수가 올바른 JDK를 가리키고 있는지 확인했습니다. 어둠 속의 한 장면으로 Java 1.7 사용에 대한 모든 참조를 변경하려고 시도했지만 배포 후에도 동일한 오류가 발생했습니다.

아래에는 오류에 대한 pom.xml 파일과 스택 추적이 나열되어 있습니다. 언제나처럼, 시간과 도움에 감사드립니다!

의 pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.projectName.project</groupId> 
    <artifactId>Project</artifactId> 
    <packaging>war</packaging> 
    <version>1.0-SNAPSHOT</version> 
    <name>Test Maven Webapp</name> 
    <url>http://maven.apache.org</url> 

    <properties> 
     <org.springframework.version>4.0.6.RELEASE</org.springframework.version> 
     <hibernate.version>5.2.1.Final</hibernate.version> 
     <mysql.connector.version>5.5.49</mysql.connector.version> 
     <hibernate.version>5.2.1.Final</hibernate.version> 
     <mysql.connector.version>5.5.50</mysql.connector.version> 

    </properties> 

    <dependencies> 
     <!-- JDBC Driver --> 
     <dependency> 
      <groupId>mysql</groupId> 
      <artifactId>mysql-connector-java</artifactId> 
      <version>6.0.3</version> 
     </dependency> 

     <dependency> 
      <groupId>junit</groupId> 
      <artifactId>junit</artifactId> 
      <version>3.8.1</version> 
      <scope>test</scope> 
     </dependency> 

     <dependency> 
      <groupId>javax.servlet</groupId> 
      <artifactId>javax.servlet-api</artifactId> 
      <version>3.1.0</version> 
      <scope>provided</scope> 
     </dependency> 

     <!-- Spring --> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-context</artifactId> 
      <version>${org.springframework.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-webmvc</artifactId> 
      <version>${org.springframework.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-tx</artifactId> 
      <version>${org.springframework.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-orm</artifactId> 
      <version>${org.springframework.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.data</groupId> 
      <artifactId>spring-data-jpa</artifactId> 
      <version>1.10.2.RELEASE</version> 
     </dependency> 

     <!-- Hibernate --> 
     <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-core</artifactId> 
      <version>5.1.1.Final</version> 
     </dependency> 
     <dependency> 
      <groupId>org.hibernate.javax.persistence</groupId> 
      <artifactId>hibernate-jpa-2.0-api</artifactId> 
      <version>1.0.1.Final</version> 
     </dependency> 
     <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-entitymanager</artifactId> 
      <version>5.1.1.Final</version> 
     </dependency> 

     <!-- HSQL Database --> 
     <dependency> 
      <groupId>org.hsqldb</groupId> 
      <artifactId>hsqldb</artifactId> 
      <version>2.3.2</version> 
     </dependency> 

     <!-- JSON --> 
     <dependency> 
      <groupId>org.json</groupId> 
      <artifactId>json</artifactId> 
      <version>20160810</version> 
     </dependency> 

     <!-- Jackson To Convert java to JSON --> 
     <dependency> 
      <groupId>com.fasterxml.jackson.core</groupId> 
      <artifactId>jackson-databind</artifactId> 
      <version>2.8.1</version> 
     </dependency> 

     <!-- Application View --> 
     <dependency> 
      <groupId>jstl</groupId> 
      <artifactId>jstl</artifactId> 
      <version>1.2</version> 
     </dependency> 


     <dependency> 
      <groupId>org.apache.commons</groupId> 
      <artifactId>commons-dbcp2</artifactId> 
      <version>2.0</version> 
     </dependency> 

     <!-- Log4J --> 
     <dependency> 
      <groupId>log4j</groupId> 
      <artifactId>log4j</artifactId> 
      <version>1.2.17</version> 
     </dependency> 
    </dependencies> 

    <build> 
     <finalName>ROOT</finalName> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-compiler-plugin</artifactId> 

       <version>2.5.1</version> 
       <configuration> 
        <source>1.8</source> 
        <target>1.8</target> 
       </configuration> 
      </plugin> 

      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-war-plugin</artifactId> 
       <configuration> 
        <webXml>src\main\webapp\WEB-INF\web.xml</webXml> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 
</project> 

스택 추적

type Exception report 

message Servlet.init() for servlet springDispatcherServlet threw exception 

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

exception 
javax.servlet.ServletException: Servlet.init() for servlet springDispatcherServlet threw exception 
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) 
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) 
org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616) 
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:522) 
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1095) 
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:672) 
org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1502) 
org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1458) 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 
java.lang.Thread.run(Thread.java:724) 


root cause 

java.lang.UnsupportedClassVersionError: springmvc/controllers/AccountController : Unsupported major.minor version 52.0 (unable to load class springmvc.controllers.AccountController) 
org.apache.catalina.loader.WebappClassLoaderBase.findClassInternal(WebappClassLoaderBase.java:2506) 
org.apache.catalina.loader.WebappClassLoaderBase.findClass(WebappClassLoaderBase.java:831) 
org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1274) 
org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1139) 
org.springframework.util.ClassUtils.forName(ClassUtils.java:247) 
org.springframework.beans.factory.support.AbstractBeanDefinition.resolveBeanClass(AbstractBeanDefinition.java:395) 
org.springframework.beans.factory.support.AbstractBeanFactory.doResolveBeanClass(AbstractBeanFactory.java:1346) 
org.springframework.beans.factory.support.AbstractBeanFactory.resolveBeanClass(AbstractBeanFactory.java:1317) 
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.predictBeanType(AbstractAutowireCapableBeanFactory.java:594) 
org.springframework.beans.factory.support.AbstractBeanFactory.isFactoryBean(AbstractBeanFactory.java:1394) 
org.springframework.beans.factory.support.DefaultListableBeanFactory.doGetBeanNamesForType(DefaultListableBeanFactory.java:385) 
org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanNamesForType(DefaultListableBeanFactory.java:362) 
org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanNamesForType(DefaultListableBeanFactory.java:348) 
org.springframework.context.support.AbstractApplicationContext.getBeanNamesForType(AbstractApplicationContext.java:1051) 
org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.initHandlerMethods(AbstractHandlerMethodMapping.java:119) 
org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.afterPropertiesSet(AbstractHandlerMethodMapping.java:103) 
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping.afterPropertiesSet(RequestMappingHandlerMapping.java:126) 
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1612) 
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1549) 
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:539) 
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:475) 
org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:302) 
org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:228) 
org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:298) 
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193) 
org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:703) 
org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:760) 
org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:482) 
org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:658) 
org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:624) 
org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:672) 
org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:543) 
org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:484) 
org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:136) 
javax.servlet.GenericServlet.init(GenericServlet.java:158) 
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) 
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) 
org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616) 
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:522) 
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1095) 
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:672) 
org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1502) 
org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1458) 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 
java.lang.Thread.run(Thread.java:724) 
+0

이 오류의 의미는 다음과 같습니다. JVM 버전 7 이하를 실행하고 Java 8로 컴파일 된 클래스를로드하려고합니다. – Seelenvirtuose

+0

java -version을 명령 줄에서 실행하면 Java 8을 실행 중임을 나타냅니다. – user3792733

+0

그리고 당신은 또한 "자바 ..."와 comand 라인에서 당신의 바람둥이 시작합니까? – Seelenvirtuose

답변

1

UnsupportedClassVersionError 인해 클래스가 Java 버전보다 자바 버전으로 컴파일 된 사실을 항상 입니다 그것을 실행하는 데 사용됩니다. 당신이 IDE이있을 때

, Tomcat 및 다른 것들과 같은 애플리케이션 서버, 당신은 (가장 중요되는 JAVA_HOME 환경 변수)를 JDK를 지정해야합니다 몇 가지 설정을 할 수 있습니다.

  • 설정 포인트 JRE에 대신 JDK

javac 필요가있을 때이 문제가 발생합니다 그들이 올바른 위치에 모든 포인트가, 아무 문제가없는 경우 그러나 다음과 같은 오류 가능성이있다 JRE에는 존재하지 않습니다. 예를 들어 Tomcat은 컴파일 할 때 javac이 필요하므로 JRE은 충분하지 않습니다. 다른 설정

이것은 UnsupportedClassVersionError 발생하고 당신이 잘못되는 설정을 찾을 필요가 아닌 다른 JDK에 포인트를 설정

  • .종종 JAVA_HOME은 올바른 위치를 가리키고 다른 설정은 이전 JDK을 가리 킵니다. 일반적인 문제는 JAVA_HOMEOpenJDK을 가리키는 Oracle의 JDK 및 Tomcat을 가리킨다는 것입니다.

    -source-target 플래그를 사용하여 이전 버전 용으로 컴파일 할 수 있으므로 시스템에 둘 이상의 JDK를 둘 필요가 없습니다. 오래된 것들을 제거하면 신비한 오류에 대한 가능성이 줄어 듭니다.