시엘이
84
2018-05-16 22:48:07
11
619

웹 서버 자바 1.7인데 자꾸 1.8로 컴파일이 됩니다 ㅜㅜ


Unsupported major.minor version 52.0 [duplicate]


때문에 야근중입니다..ㅜ


웹서버에는 1.7자바 깔려있는데 52.0 (자바1.8)에 해당하는 에러가 뜨네요

톰캣으로 돌리는데, 어느 단계에서 문제가 생기는 것일까요 ㅜ.ㅜ

0
0
  • 답변 11

  • 열린기술자.삵(sarc.io)
    199
    2018-05-16 22:52:07

    Tomcat 버전 몇 사용하시나요?

    0
  • 타키투스
    361
    2018-05-16 23:01:41

    질문 내용이 헷깔리는게..


    1. 톰캣 자체가 구동하는데 저런 에러가 난다.

    2. 톰캣을 구동하는중에 배포한 웹 애플리케이션 Deploy 중에 저런 에러 메시지가 난다.


    1번일 경우에는 톰캣 구동시 세팅되는 JVM 패스와 ClassPath 등이 잘못된 경우로 이걸 바로 잡아주면 되며 2번일 경우에는 웹 애플리케이션을 1.7 버전으로 컴파일 하면 됩니다.


    2번일 경우 그리고 Eclipse 를 사용할 경우에 Preferance 에서 Java 의 기본 컴파일러 버전을 1.7로 교체하고 Maven 을 사용할 경우 Source, Target 버전을 1.7로 설정하면 될겁니다.

    0
  • 시엘이
    84
    2018-05-16 23:04:56 작성 2018-05-16 23:09:35 수정됨

    삵 // 톰캣 7입니다!

    타키투스 //  톰캣 구동은 됩니다 2번 케이스에 해당되는 문제입니다! 답변감사합니다 그대로 한번 해보겠습니다.

    타키투스 // 확인해보았는데, 컴파일 버전은 1.7로 원래 되어있고, 메이븐 compiler-plugin의 소스 및 타겟 도 1.7로 잡혀 있던 상태였습니다 ㅜㅜ

    0
  • 타키투스
    361
    2018-05-16 23:06:59

    2번이라면 무조건 1.7 버전으로 웹 애플리케이션을 컴파일 하셔야 합니다. 아니면 톰캣을 1.8로 돌리던가...

    0
  • 시엘이
    84
    2018-05-16 23:18:33 작성 2018-05-16 23:22:13 수정됨

    타키투스 // 메이븐 컴파일러 플러그인의 소스/타겟 을 a로 잡아놓고,  그 걸 war로 말아서 웹서버에 올리면 자바 a버전의 컴파일러가 컴파일을 한다. 는 개념으로 이해하고 있는데 맞는건가요? 

    지금 이미 그렇게 하고 있는데 이상하네요 ㅠㅠ


    웹서버 자바 버전도 원래 1.7이었던 놈을 1.8로 올려봤지만 똑같은 에러 뜨고 안되길래

    다시 1.7로 내렷슴니다 ㅜ

    0
  • 타키투스
    361
    2018-05-16 23:27:41

    Maven 에 있는 그거는 아무런 관련이 없습니다. 아니 정확하게는 컴파일할때에 호환성을 갖도록 하는 역할만하는 것으로 보입니다.

    Maven 으로 Clean all 해서 war 로 말때에 Console 에서 javac 가 어느 버전으로 실행되는지 볼수 있는데, 저 경험상 Maven 설정보다는 Eclipse 의 설정을 우선 따랐던 것으로 압니다.


    Eclipse 에서 Window -> Preferences -> java -> Installed JREs 를 열어서 보시면 jre 1.7 로 선택이 되어 있는지 보세요.


    0
  • 시엘이
    84
    2018-05-16 23:38:25

    //타키투스

    아 그렇군요~

    말씀하신 이클립스 설정..이미 1.7입니다 ㅜ,ㅜ

    온라인에 있는 왠만한 해결책들 다 확인해본거 같은데 답이 안나오니까 참 슬프고 빡치고 졸리고 힘빠지네요 ㅜ.ㅜ

    0
  • 타키투스
    361
    2018-05-16 23:45:25

    토닥토닥~


    다음과 같이 pom.xml 에 되어 있나요?

                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>2.5.1</version>
                    <configuration>
                        <source>1.7</source>
                        <target>1.7</target>
                        <compilerArgument>-Xlint:all</compilerArgument>
                        <showWarnings>true</showWarnings>
                        <showDeprecation>true</showDeprecation>
                    </configuration>
                </plugin>

    그리고 다음과 같이 maven clean all 하면 jre 컴파일러를 뭐 쓰는지 볼수 있습니다.

    저게 jre 1.7 로 되어야 합니다.

    저거 두개 확인해 보세요.

    1
  • 시엘이
    84
    2018-05-17 00:10:39

    //타키투스

    pom.xml 그 부분은 완전 똑같습니다! ㅜㅜ 

    maven clean을 어떻게 해야 하는지 한참 못찾앗네여 ㅜ.ㅜ

    근데 jre그것도 1.7로 되어잇을거에요... ㅜ



    0
  • sonshinchul
    443
    2018-05-17 09:23:09 작성 2018-05-17 09:37:16 수정됨

    이클립스 메뉴로 들어가지 마시고 이클립스에서 프로젝트에서 프로젝트에 마우스 대고 우클릭후 Properties 설정 들어가셔서 아래에 1.7로 되어 있는지 확인하세요. jre에서 설정하는거랑은 별개로 compiler가 1.7로 컴파일 해야 됩니다.


    그리고 서버에 배포하기 전에 정확히 님이 컴파일한 class파일이 1.7로 되어 있는지 확인 해보세요.

    확인 방법은 컴파일된 class파일 하나를 선택하신수 에디트 플러스로 열어보면 인코딩 어쩌고 저쩌고 할거에요 그럼 그중에 hex 모드로 여시면 

    00000000h: CA FE BA BE 00 00 00 33 00 67 07 00 02 01 00 27 

    이렇게 ca fe ba be로 시작하는게 보일텐데 위에서 33 숫자가 16진수이기 때문에 10진수로 계산을 하면 됩니다. 33는 즉 10진수로 51이기 때문에 java1.7 버전이고 34가 나올경우는 52이기 때문에 java 1.8 입니다.






    1
  • 시엘이
    84
    2018-05-17 10:36:38

    sonshinchul//

    와 많은걸 배우게 되는 댓글이네요

    어제 그 문제는 톰캣 재설치로..어이없게 해결되엇습니다 개빡침 ㅜㅜㅜㅜ


    그런데 말씀하신 부분은 새롭게 알게된 부분이네요 감사합니다!

    0
  • 로그인을 하시면 답변을 등록할 수 있습니다.