상세 컨텐츠

본문 제목

[ 웹 개발 ] 리눅스 명령어로 자바 파일 (컴파일, 실행)

실무/[ 기타 ]

by glenn93 2024. 7. 24. 16:47

본문

728x90
반응형

사용목적

폐쇄망에서 fcm토큰이 정상 발급되는지 확인하는 중이었다. 운영서버에서  IP와 port를 허용 후 소스를 반영하고 테스트 해야했지만,  공공기관은 반영일이 정해져 있기에 당장 불가능... 따라서 운영에서 라이트한 테스트를 준비했다.

 

 

 

준비과정

1. 사용할 서버에 자바jdk 설치 해야함.  (자바 컴파일/실행 명령어 사용 하기 위함)
2. 폐쇄망에서는 fcm의 파일은 토큰을 발급받을때 firebase에 연결이 안되므로, 프로젝트명
    (.json)을 firebase에서 받아야한다. 그리고 프로젝트에 위치 시켜준다.
3. (Sender/Message/Result).java 파일 생성 후 운영에 폴더생성하고 자바 및 json파일을 넣는다.

4. 자바파일에서 사용되는 lib을 폴더에 위치시킨다.

 

 

 

컴파일 시작!

기본 명령어
1. 컴파일 명령어 : javac fcmTest.java
2. lib, class 같이 컴파일 명령어 : javac -cp "/본인경로/lib/*:." fcmTest.java Result.java
3. 실행 명령어 : java -cp "/본인경로/lib/* :." fcmTest

 

# 1. 컴파일 실행
javac fcmTest.java
# 오류: 기본 클래스 fcmTest을(를) 찾거나 로드할 수 없습니다.
# 원인: 자바 파일 내 이전 소스 복붙의 잔해로 남은 package com.xxx.xx; 을 삭제해주면 해결


# 2. 컴파일 실행 
# 오류: cannot find symbol public static Result2 sendNoRetry(Message2 message2).......
# 원인: 라이브러리를 포함해서 컴파일을 수행해야한다. -cp "/home/tiger/tomcat8.5/temp/test/lib/*" 추가시 > 해결
javac -cp "/home/company/tomcat8.5/temp/test/lib/*" fcmTest.java



# 3. 라이브러리 추가하고 다시 컴파일
# 오류: cannot find symbol public static ....... (클래스명)
# 원인: fcmTest.java뿐만아니라 필요한 자바클래스들을 같이 컴파일 해서 수행시 해결!
# 해당 폴더에 .class파일들이 생성됨을 확인함.
javac -cp "/home/company/tomcat8.5/temp/test/lib/*" fcmTest.java Result2.java Message2.java



# 4. 컴파일 됬으니 실행!
java -cp "/home/company/tomcat8.5/temp/test/lib/*" fcmTest
# 오류: 기본 클래스 fcmTest을(를) 찾거나 로드할 수 없습니다.
# 원인: 라이브러리 (:.) 를 뒤에 안붙임... 해결!!
java -cp "/home/company/tomcat8.5/temp/test/lib/*:." fcmTest


# 5. 성공!!
# fcmTest.java가 정상적으로 컴파일 > 실행 됬다.

 

 

 

위 과정을 통해 운영에 올린 다른 소스에는 영향없이 fcm api 통신을 성공시켜 알림을 받았다.

728x90
반응형

관련글 더보기