JEUS JNI Native Library so 파일 적용기

2024. 5. 16. 00:17·dev/Spring Boot
728x90
반응형
SMALL

JEUS 서버에서 JNI 사용 시 발생한 오류에 대해 개인적으로 해결한 방법을 공유합니다. 

리눅스에 JEUS를 설치된 상항에서 JNI Native Library  so파일을 사용하려고 하는데 문제가 발생했습니다.

 

1. java.lang.UnsatisfiedLinkError: no xxx in java.library.path

처음 처음 격은 문제는 java.library.path JNI Native Library 경로를 찾지 못해서 발생한 문제이다.

JEUS Admin -> Server  ->   <Target Server> ->  JVM Option 

-Djava.library.path= '경로' 를 추가해 줬다. 

 

해당 오류를 발생하지 않았지만.. 다음 2번 오류가 발생했다. 

 

2. 동적 오브젝트 파일을 열 수 없습니다: 그런 파일이나 디렉터리가 없습니다. 

처음 해당 오류가 발생하여 경로를 잘못 설정했거나, 권한문제라고 판단했다. 

하지만 경로와 권한은 아무런 문제가 없었다. 

 

보통 JNI Native Library를 사용할 때 리눅스에 경우 LD_LIBRARY_PATH 환경변수 설정을 한다. 

LD_LIBRARY_PATH 경로 설정은 정상적으로  되어 있는데 왜 경로를 못 찾는 것인지... 

 

JEUS 서버 구동시 LD_LIBRARY_PATH 작성 존재여부를 판단하여 로드시점에 넣어

주고 있음을 알게 되었다. 

반응형

즉... JEUS서버 구동 후 환경변수에 LD_LIBRARY_PATH 최초로 작성한 경우..

이미 구동된 JEUS에서 PATH가 정상적으로 적용되지 않는 것 같았다.

JEUS 자체를 내렸다가 올리니깐 오류가 해결되고 정상적으로 JNI Native Library 사용하는데 문제가 없었다. 

 

JEUS 구동시 사전에 LD_LIBRARY_PATH 부분이 환경변수에 작성되어 있다면 발생하지 않는 문제인듯 하다. 

 

3. java.lang.UnsatisfiedLinkError: Native Library XXX.so already loaded in another classloader 

2번 문제를 해결하고 JNI Native Library so 파일을 사용하여 작업하고 재배포 시 위 오류가 발생했다.

발생원인은 하나의 클래스로더에서 로드되고 나면, 다른 클래스로더에서는 불러올 수 없다는 의미이고

JEUS 위에 구동 중인 서버의 애플리케이션만 재배포하는 경우 발생합니다. 

application 배포한 jar, war 경로에 파일만 교체하고 

JEUS Admin ->Server -> <Target Server>  -> Stop

JEUS Admin ->Server -> <Target Server>  -> Start

Target 서버를 내렸다 올려야 서버가 다시 구동되면서 ClassLoader에서 so파일을 정상적으로 로드할 수 있습니다. 

Target 서버에서 이미 로드된 후 어플리케이션만 재배포할 경우 이미 로드된 so 파일을 애플리케이션 클래스로더에서 

다시 로드하려고 하여 발생한 문제였습니다. 

정리하기

1. LD_LIBRARY_PATH 설정 후 JEUS 재구동 

   - JEUS 설치 및 구동 전이라면 사전에  LD_LIBRARY_PATH 환경변수를 작성하는 것을 추천

 

2. 애플리케이션 배포 시 Target 서버 재구동

  - 어플리케이션 배포 후 배포파일 경로에 파일만 교체하고 Target 서버 재구동하자.

 

 

끝으로...

위 내용은 개인적으로 JEUS에서 JNI  Native Library 사용 시 격은 문제 및 해결한 방법입니다.

정확한 정보가 아닐 수 있음을 알려드립니다. 

JEUS 버전, 서버환경, 설정, 운영체제 다양한 예외가 있을 수 있습니다. 

그 점 참고해 주시기 바랍니다. 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

728x90
반응형
LIST
저작자표시 비영리 변경금지 (새창열림)

'dev > Spring Boot' 카테고리의 다른 글

Spring Boot JPA 기초 및 셋팅  (1) 2023.07.22
Spring Boot 다국어 Message 사용  (8) 2023.07.20
[오라클]Oracle DB XE 무료버전 설치 및 설치 오류 방법  (2) 2022.12.06
Spring Boot MyBatis 로 MySql 연동하기 Gradle  (5) 2021.08.07
'dev/Spring Boot' 카테고리의 다른 글
  • Spring Boot JPA 기초 및 셋팅
  • Spring Boot 다국어 Message 사용
  • [오라클]Oracle DB XE 무료버전 설치 및 설치 오류 방법
  • Spring Boot MyBatis 로 MySql 연동하기 Gradle
NCJ
NCJ
일상과 개발을 공유하고 소통하는 블로그입니다.
    반응형
    250x250
  • NCJ
    NCJ 프로그래밍
    NCJ
  • 전체
    오늘
    어제
    • ALL
      • dev
        • android
        • java
        • Spring Boot
        • node.js
        • MFC
        • react-native
        • web
        • 기타
        • vue
        • react
      • 일상
        • news
        • 요리
        • 영화
        • 드라마
        • 제품
        • 게임
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    리니지w 보상
    리니지w 이벤트
    던파 출시일
    던파 서버 오픈
    리니지w
    리니지
    갤럭시 버즈2
    갤럭시 워치 4
    던파 캐릭생성
    갤럭시
    삼성
    리니지w 오픈
    리니지w 이벤트 안내
    게임
    apache
    코딩문제
    php
    던파 사전캐릭
    다이어트
    던파 모바일 사전캐릭
    Web
    java
    CSS
    안드로이드
    던파 모바일 서버오픈
    리니지W 사전예약
    던파 모바일 사전캐릭 생성
    Android
    사전캐릭
    window webserver
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
NCJ
JEUS JNI Native Library so 파일 적용기
상단으로

티스토리툴바