본문 바로가기

PBL 빅데이터/산학프로젝트

[산학프로젝트] Nifi Java version 오류 해결하기

Error : exception in thread main java.lang.unsupportedclassversionerror unsupported major.minor version 52.0 발생


Exception in thread "main" java.lang.UnsupportedClassVersionError: org/openrdf/model/ValueFactory : Unsupported major.minor version 52.0 at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:800) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) at java.net.URLClassLoader.defineClass(URLClassLoader.java:449) at java.net.URLClassLoader.access$100(URLClassLoader.java:71) at java.net.URLClassLoader$1.run(URLClassLoader.java:361) at java.net.URLClassLoader$1.run(URLClassLoader.java:355) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:354) at java.lang.ClassLoader.loadClass(ClassLoader.java:425) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) at java.lang.ClassLoader.loadClass(ClassLoader.java:358) at java.lang.Class.getDeclaredMethods0(Native Method) at java.lang.Class.privateGetDeclaredMethods(Class.java:2615) at java.lang.Class.getMethod0(Class.java:2856) at java.lang.Class.getMethod(Class.java:1668) at sun.launcher.LauncherHelper.getMainMethod(LauncherHelper.java:494) at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:486)


J2SE 8 = Version 52 라는 의미라고 볼 수 있다. java version이 맞지않아서 발생하는 문제이다.

# java version 설치

java -version

먼저 java 버전을 확인해서 8버전인지 확인을 진행해주어야한다.

 

현재 진행중인 CentOS VM은 6버전으로 yum 사용이 중지되었음으로 rpm server를 다운받아서 실행해주어서 rpm으로 진행해준다.

1) java 다운받기

yum이 없으니 local 컴퓨터에서 java를 오라클에서 다운 받아야한다.

https://www.oracle.com/java/technologies/javase-downloads.html

Java SE 8 → Linux x64 RPM Package(현재 linux 64비트) → 오라클 계정에 로그인하면 다운받아진다.

다운받아진 파일을 VM으로 넣는 방법은 3가지의 방법이 있다.

 

1-1) 드래그 앤 드롭

VM을 실행 후 VM에서 장치 → 드래그 앤 드롭 → 양방향 설정해서 local에서 VM으로 넣는 것이 가능해진다.

 

1-2) 공유 폴더

VM을 실행 후 VM에서 장치 → 공유 폴더 → 공유 폴더 설정 → 옆에 폴더 모양의 새로운 공유 폴더 생성하기 누르기 → 폴더 경로: 기타 → 폴더 이름 선택에서 공유 폴더로 지정할 폴더를 생성하고 그 폴더를 지정해주기 → 모든 체크 표시에 체크해주기

양방향으로 공유 폴더가 생성됨으로 파일을 넣어서 이용이 가능하다.

 

1-3) 호스트 어댑터

VM (설정할 VM이 꺼진 상태)→ 설정 → 네트워크 → 어댑터 → 어댑터2 → 호스트 전용 어댑터 설정

이렇게 설정 후 , 다시 VM을 켜준다.

# ip 확인하기

ifconfig

ip를 확인해보면, 기존에 없던 호스트 어댑터를 통해 생성된 ip를 확인할 수 있다. 이 ip를 이용해서 filezilla를 사용해서 파일을 주고 받는 것이 가능하다. 생성된 ip는 local cmd창에서 ip가 연결되었는지를 확인할 수가 있다.

# ip가 listen중인지를 확인하기

ping ip주소

현재는 3번 방법인 호스트 어댑터를 사용해서 진행되었다.

 

2) java 설치하기

다운 받은 java 파일 이름: jdk-8u291-linux-x64.rpm

filezilla를 통해서 VM으로 옮겼다면, 옮긴 위치로 가서 설치를 진행하게 된다.

# rpm으로 설치하기

rpm -ivh jdk-8u291-linux-x64.rpm

rpm 명령어로 설치를 완료해준다.

 

3) java version 변경하기

설치한 java가 어디에 위치해있는지를 확인해준다. 보통 /usr/java 정도에 위치하니 참고해서 찾으면 된다. 설치한 java의 위치는 변경시에 필요하니 메모를 해둔다.

 

3-1) Nifi java 변경하기

Nifi를 설치 후, 생성된 폴더로 들어간다. 폴더 안에서 nifi-env.sh 안에서 Nifi 설정을 변경해준다.

# Nifi 환경변수 편집하기

vi nifi-env.sh

# Nifi 환경변수 변경하기

# nifi-env.sh 폴더가 열렸다면, i를 눌러서 insert 상태로 변경해서 환경변수를 변경해준다.

export JAVA_HOME=설치한 java 위치



# esc누르고 :wq 눌러서 저장하고 빠져나오기

변경을 완료하면 Nifi에서의 java 버전을 변경해준 것이 된다. 실제로 그냥 java-version을 친다면 기존의 java로 나오게 되지만 Nifi에서는 설치한 version 으로 진행된다.

 

4) ip 변경하기

호스트 어댑터를 통해서 local과 양방향으로 가능해졌으니, local에서도 Nifi를 열 수 있도록 ip를 변경해주는 것이 가능하다.

# 위에서 설정을 마친 후 그 디렉토리에서 진행한다.

cd .. cd conf

# nifi.properties안에서 ip변경하기

# nifi.properties 폴더가 열렸다면, i를 눌러서 insert 상태로 변경해서 환경변수를 변경해준다.

vi nifi.properties



# 밑으로 내려가다보면 ip주고와 port번호가 나오게 된다.

# Nifi의 ip임으로 위에 있던 호스트 어댑터 ip를 넣어주면 된다. port의 변경을 원하면 저기서 진행할 수 있다.

ip를 변경해주면 해당 ip를 통해서 local컴퓨터로 직접 열기도 가능해진다.

 

5) Nifi 실행하기

nifi-env.sh가 들어있는 위치에서 실행을 진행한다.

# Nifi 실행하기

./nifi.sh start

아무런 오류가 없이 진행된다면, 실행이 되는 것이다.

Nifi를 실행한 후에 지정한 ip에서 port도 변경되었으면 변경된 port를 사용해서 접속한다.

https://ip주소:8080/nifi

※ 접속이 안될 때

1) log 확인하기

 

# Nifi 실행한 폴더에서 진행하기

cd ..

cd logs

tail -f ./logs/nifi-app.log

실행 후, 아무런 로그가 없거나 오류가 진행되면 Nifi가 실행되지않고 있는 것임을 알 수 있다. 로그가 올라오지만 접속이 안되는 것은 현재 실행중이여서 시간이 필요한 것이다.

 

2) port 확인하기

netstat - nltp | grep prot번호

이런식으로 listen되어있는지를 확인이 가능하다. listen으로 뜬다면 현재 진행되는 중임을 알 수 있으니, 기다린 후 다시 새로고침을 진행한다.

※ 참고 사항

1) 양방향 복붙 허용하기

VM → 장치 → 클립보드 공유 → 양방향

지정해주면 local에서 VM으로 VM에서 local로 복붙이 진행이 가능해진다.

 

2) 현재 위치 확인하기

# 현재 위치 확인하기

pwd

진행하다가 현재 위치를 확인하고 싶다면, pwd를 눌러서 확인할 수 있다.