본문 바로가기

전체 글

javac: invalid target release - 메이븐 프로젝트 컴파일 시 뜨는 에러 다음과 같이 메이븐 프로젝트를 컴파일하려 할 때, 버전 문제로 Build Failed가 뜨는 경우 중 하나입니다. * full debug logging을 보려면 끝에 -e를 붙임 javac: invalid target release: 11 11 버전의 소스파일은 현재 서버에서 컴파일 할 수 없다는 것입니다. pom.xml에는 소스 컴파일 세팅이 jdk11버전으로 맞춰져 있고, 리눅스 서버의 자바 버전은 jdk1.8로 맞춰진 상태였습니다. 즉, 11버전의 소스파일을 더 낮은 버전인 1.8로 컴파일 하려니까 컴파일 에러가 뜨는겁니다. 리눅스 서버에 설정되어 있는 Java 버전 - jdk1.8로 설정되어 있는 걸 볼 수 있습니다. 해결방법은 소스파일의 세팅부분(pom.xml)에서 컴파일 버전을 낮추거나, 리눅.. 더보기
[운영체제 OS] 프로세스 스케줄링 - 스케줄링 큐란? 다중 프로그래밍(시분할)의 목적 각 프로그램이 실행되는 동안 사용자가 상호작용할 수 있도록 프로세스들 사이에서 CPU를 빈번하게 교체하는 것 교체는 왜 하는가? 단일처리기 시스템에서는 실행 중인 프로세스가 한 개 이상 있을 수 없기 때문. 스케줄링 큐(Scheduling Queues) 크게 두가지 큐가 있다. - 준비완료 큐, 장치 큐 이 중 준비완료 큐에 대해 알아보겠다. 준비완료 큐 준비완료 상태에서 실행을 대기하는 프로세스들은 준비완료 큐에 있다. 이 큐는 일반적으로 연결 리스트로 저장된다. 준비완료 큐의 헤더는 리스트의 첫 번째와 마지막 PCB를 가리키는 포인터를 포함한다. 새로운 프로세스는 처음에 준비완료 큐에 놓인다. 프로세스는 cpu를 할당받을(dispatch) 때까지 준비완료 큐에서 대기한.. 더보기
[aws] EC2 서버에 접속하기 (맥OS) Mac & Linux 는 터미널을 이용해 접속합니다. 먼저 ssh key를 생성하기 전에 이미 생성된 key가 있는지 확인해봅니다. ~/.ssh/id_rsa.pub 파일이 없다면, 아직 한 번도 ssh key를 생성하지 않은 상태입니다 ssh key pair를 만들어보겠습니다. Mac은 OpenSSH를 포함하고 있어 아래와 같이 ssh-keygen 명령으로 생성이 가능합니다. 1) 어느 경로에 키를 저장할지 선택 (기본경로는 /Users/본인컴퓨터이름/.ssh/id_rsa) -> 엔터로 기본경로에 저장해줍니다. 2) 비밀번호는 무엇으로 할지 -> 엔터 쳐서 그냥 넘어갑니다. 그럼 키가 만들어지고 기본 위치(/Users/본인컴퓨터이름/.ssh/id_rsa)에 파일이 생성됩니다. 이제 다시 id_rsa.pu.. 더보기
[Spring] @Autowired 한 class가 null로 나오는 문제 해결법 (Spring 의존성 주입 문제) 우리는 보통 bean에 의존성 주입을 하고 싶을 때, @Autowired 를 사용하는데요. @Autowired한 class 가 null 이 나왔다는 건, 해당 클래스에 의존성 주입이 제대로 이루어지지 않았다는 것입니다. Spring에서 의존관계 주입방법은 크게 4가지가 있는데요. 1. 생성자 주입 2. setter 주입 3. 필드 주입 4. 일반 메서드 주입 이 중, 저는 필드 주입 방법으로 의존성 주입을 해줬는데요. (참고: Spring에서 권장하는 방식은 생성자 주입 방식 입니다) 저의 경우는, @Autowired도 잘 붙여줬고 @Service도 잘 붙여줘서 문제가 없다고 생각했는데요. (현재 상태가 ItunesCrawlingService 클래스에 SingerDAO를 주입시켜 주어서 이 둘의 의존관계.. 더보기
[운영체제 OS] 프로세스 개념, 프로세스 상태 여기서는 잡과 프로세스란 용어를 호환성 있게 사용할 것이다. 1. 프로세스란? 비공식적으로, 프로세스란 실행 중인 프로그램이다. 프로그램 카운터의 값과 처리기 레지스터의 내용으로 대표되는 현재 활동을 포함한다. 프로세스는 함수의 매개변수, 복귀 주소와 로컬 변수와 같은 임시적인 자료를 가지는 프로세스 스택과 데이터 섹션을 포함한다. 프로세스는 프로세스 실행 중에 동적으로 할당되는 메모리인 힙을 포함한다. 2. 프로그램과 프로세스는 다른 것이다. 프로그램은 명령어 리스트를 내용으로 가진 디스크에 저장된 파일(= 실행파일)과 같은 수동적인 존재이다. 프로세스는 다음에 실행할 명령어를 지정하는 프로그램 카운터 및 관련된 자원의 집합을 가진 능동적인 존재이다. 실행 파일이 메모리에 적재될 때 프로그램은 프로세스.. 더보기
Quartz 라이브러리 이용하기 (특정 시간에 특정 프로그램을 실행하고 싶을 때) Quartz 라이브러리는 일반적으로 스케줄러를 구성하기 위해 사용합니다. 서버를 운영하기 위해서는 간혹 매일, 매주, 매월 주기적으로 특정한 프로그램을 실행 할 필요가 있습니다. 이 작업은 운영체제의 기능을 이용해서 작업할 수도 있지만, 스프링과 Quartz 라이브러리를 이용하면 간단하게 처리할 수 있습니다. ※ Spring Batch의 경우 많은 양의 데이터를 주기적으로 읽고 쓰는 작업에는 유용하지만 설정이 더 복잡합니다. 사용 방법 1. pom.xml 에 quartz 관련 라이브러리를 추가해줍니다. org.quartz-scheduler quartz 2.3.0 org.quartz-scheduler quartz-jobs 2.3.0 2. Quartz에 대한 설정을 하기 위해 XML과 어노테이션을 이용합니다.. 더보기
[JAVA/Spring] STS 에서 lombok 설정하기 (getter, setter가 안생기는 문제 해결) 우리가 Spring하면 가장 큰 장점으로 pom.xml 에서 Maven 형식으로 jar파일들을 바로 가져올 수 있다는 점입니다. 하지만 lombok.jar 의 경우, 일반적인 자바 라이브러리 파일과는 다르게 '설치' 라는 과정을 거쳐야 합니다. lombok 다운로드 : https://projectlombok.org/download Download projectlombok.org cmd 혹은 터미널을 켜서 다운로드 받은 경로까지 간 다음, 아래의 명령어로 lombok을 설치해 줍니다. (새로운 설치창이 켜질텐데 따로 변경할 것 없이 그대로 install 눌러주시면 됩니다.) java -jar lombok.jar 다시 STS 툴을 재시작 한다음, pom.xml 에 dependency를 추가해줍니다. 이 ve.. 더보기
[iBatis/myBatis] insert/update 쿼리 실행 후 결과 가져오기 xml단 SELECT NVL(MAX(SEQ),0)+1 AS SEQ FROM TEST_TBL WHERE YY = #YY# INSERT INTO TEST_TBL ... VALUES ... 다음과 같이 selectKey 구문을 이용하면, INSERT 후에 생긴 row의 특정 컬럼 데이터를 가져올 수 있다. java 단 int result = (int)dao.insert("testXml.insertData", map); 더보기