Java 9

[Maven] java.lang.IllegalStateException: Unable to load cache item

현상Ubuntu 서버에서 maven을 설치하여 Java 애플리케이션을 빌드하던 중 아래와 같은 에러가 발생하면서 실패했다.[ERROR] Error executing Maven.[ERROR] java.lang.IllegalStateException: Unable to load cache item[ERROR] Caused by: Unable to load cache item[ERROR] Caused by: Could not initialize class com.google.inject.internal.cglib.core.$MethodWrapper[ERROR] Caused by: Exception com.google.in..

Java 2024.06.27

[Ubuntu 20.04 LTS] Oracle JDK 1.8.0_202 설치

Ubuntu 20.04 LTS에서 apt을 이용하지 않고 Oracle Java(JDK)를 직접 설치하는 방법을 적어둔다. Oracle에서 제공하는 Java(JDK) 8은 202 버전까지가 무상이기 때문에 해당 버전을 설치해야 하는데, apt 등의 패키지 관리자를 이용하면 최신 버전의 Java가 설치될 수 있기 떄문이다. 물론 반드시 Oracle JAVA를 사용하지 않아도 괜찮다면 OpenJDK를 설치하면 된다. 참고로 AWS EC2에 설치할 것이다. 방법 1. Java 설치 파일 다운로드 https://www.oracle.com/java/technologies/downloads/archive/ Oracle에 접속하여 OS에 따라 적절하게 설치할 자바 버전 파일을 다운로드 받는다. Oracle 계정이 있어..

Linux 2021.10.24

[Java] 가변 인자 (varargs)

가변 인자 (Variable argument) 매개변수의 개수를 동적으로 지정하는 기능 JDK 1.5부터 추가되었으며, printf()가 가변 인자를 사용한 대표적인 메서드라고 할 수 있다. 가변 인자 기능이 없던 JDK 1.4 이하의 버전에서는 컬렉션 또는 배열을 이용해 여러 개의 인수를 처리했다. 컬렉션/베열 사용 예시 import java.util.Vector; public class main { public static void main(String args[]) { String[] str = {"a", "b", "c"}; Vector v = new Vector(); v.add("A"); v.add("B"); v.add("C"); print_val(str); print_val(v); } stati..

Java 2021.10.16

[Enum] 열거 타입

열거 타입(Enumeration type) 관련이 있는 상수의 집합 enum은 enumeration이라는 셈, 계산, 열거, 목록이라는 뜻의 영단어의 앞부분을 딴 예약어다. Java 1.5 이상부터 지원한다. enum을 사용하면 비교 시 값뿐만 아니라 타입까지 비교가 가능하며, 상수값이 재정의되더라도 재컴파일할 필요가 없다는 장점이 있다. 정의 클래스 정의하듯이 정의한다. enum NAME { VAL1, VAL2, VAL3 } // 예시 enum STATUS { START, RUNNING, STOP, TERMINATE } 열거형 변수 선언 및 초기화 마찬가지로 클래스 사용하듯이 사용한다. // 선언 NAME name; // 상수 접근 NAME.VAL1 // 예시 STATUS status = STATUS...

Java 2021.09.23

Overloading / Overriding

다형성 (polymorphism) 하나의 객체가 여러 가지 타입을 가질 수 있는 것 객체 지향 프로그래밍을 구성하는 특징 중 하나다. Overloading / Overriding은 Java의 다형성을 지원하는 방법이다. 각 개념은 아래와 같다. Overloading 사전적으로 '초과로 적재하다'라는 의미이다. Java에서는 클래스 내에 같은 이름의 메서드를 여러 개 선언하는 것을 의미하며, 매개변수의 타입, 개수, 순서 중 하나가 달라야 한다. 매개변수가 동일한 경우에는 반환형이 달라도 오버로딩되지 않는다. 하나의 함수가 하나의 기능을 구현해야 하는 C와 달리, 하나의 메소드명으로 여러 기능을 구현한다. 예시 print문을 오버로딩한 클래스다. public class Overloading { String..

Java 2021.09.22

[File] getPath() / getAbsolutePath() / getCanonicalPath()

Java에서는 File 클래스를 이용해 파일과 디렉터리를 다룰 수 있다. 이 글에는 File 객체의 경로를 반환하는 세 가지 함수의 차이점을 정리해둔다. getPath() 파일 객체의 경로를 반환한다. 여기서 경로란 파일 객체 생성 시 전달된 경로를 뜻한다. import java.io.File; import java.io.IOException; public class main { public static void main(String args[]) throws IOException { String dir = "./src"; String file_path = "main.java"; File file = new File(dir, file_path); if (file.exists()) System.out.pr..

Java 2021.09.21

[maven] 디렉터리 구조

maven 프로젝트의 디렉터리 구조에 대해 정리해둔다. 디렉터리 구조 Project/[Project Name] ├ src │ ├ main │ │ ├─ java │ │ └─ resources │ │ │ └ test │ ├─ java │ └─ resources │ ├ target └ pom.xml 설명 src/main/java : java 소스 파일이 저장된 경로 src/test/java : java 테스트 파일이 저장된 경로 src/*/resources : properties, xml 등과 같은 설정 파일이 저장된 경로 target : war, jar와 같은 컴파일 결과 파일이 저장된 경로 pom.xml : maven 기본 설정 파일. 프로젝트 파일이라고도 하며, 프로젝트 root 경로에 위치하고 있다. ..

Java 2021.09.19

[maven] 개념

빌드 소스 코드를 컴퓨터에서 실행할 수 있는 독립 소프트웨어 가공물로 변환하는 과정 또는 그에 대한 결과물 java 파일, .xml, .jpg, .properties 등을 JVM이나 WAS가 인식할 수 있는 구조로 패키징 하는 과정 또는 결과물 빌드 도구 프로젝트 생성, 테스트 빌드, 배포 등의 작업을 위한 프로그램으로, Maven, Gradle이 많이 사용된다. 라이브러리 추가, 라이브러리 버전 동기화 등 라이브러리 관리가 가능하다. Maven Java 프로젝트 관리 도구. 프로젝트의 전체적인 생명주기를 관리한다. pom.xml에 필요한 라이브러리를 정의하여 해당 라이브러리 뿐만 아니라 라이브러리 동작에 필요한, 즉 라이브러리가 의존하는 다른 라이브러리까지 관리한다. 공식 Maven 중앙 저장소 또는 ..

Java 2021.09.14

JAR - 압축/해제/디컴파일

JAR Java Archive 자바 클래스 파일과 클래스가 이용하는 리소스 및 메타데이터를 자바 플랫폼에 애플리케이션이나 라이브러리로 배포하기 위한 소프트웨어 패키지 파일 포맷 확장자는 .jar이며, 실제로는 zip 파일 포맷으로 이루어진 압축 파일이다. JDK에 포함된 jar 명령어를 이용해 jar 파일을 생성하거나 압축을 해제할 수 있다. jar 파일은 자바 런타임이 효율적으로 애플리케이션을 배포할 수 있는 수단이며, 요청 한 번으로 애플리케이션 전체를 다운로드할 수 있게 한다. 압축 jar -cvf # -c : 새 jar 패키지 파일 생성 # -v : 상세 정보 확인 # -f : jar 파일 이름 지정 PATH의 디렉터리를 FILENAME으로 압축한다. 압축 해제 반디집과 같은 일반 압축 해제 소프..

Java 2021.08.16
1