목록Java (3)
신비한 개발사전
간단한 콘솔 기반 자바 애플리케이션을 빌드해서 java -jar로 실행하려고 했을 때 일어난 일이다. "./build/libs/java-janggi-1.0-SNAPSHOT.jar에 기본 Manifest 속성이 없습니다." 오류 메세지가 뜨면서 애플리케이션이 실행되지 않았다. 이 한 줄 외에 다른 정보는 없었다. 무엇이 문제였나?우리가 코딩한 자바 애플리케이션은 JVM이 실행해준다. 이때 JVM은 애플리케이션의 entrypoint, 즉 진입점을 알아야 한다. 어느 클래스에 구현된 main() 함수를 실행시켜야 이 애플리케이션이 우리가 설계한 대로 동작할지 JVM은 알 수 없기 때문에, 우리가 명시적으로 알려줘야 한다. 그리고 그 방법은 이정표 역할을 하는 manifest 파일(MANIFEST.MF)에 Ma..
자바 빌드 파일에 JUnit Jupiter와 JUnit Platform 의존성을 잘못 추가하면 생길 수 있는 문제와, 그런 문제를 해결한 과정을 통해 알게 된 것들을 정리해보려고 한다. 버전 불일치클론해온 모 프로젝트의 테스트 코드를 실행하자 콘솔창이 빨간 텍스트로 채워지면서 테스트가 시작도 못해보고 강제 종료되었다. 테스트 자체를 실행할 수 없는 문제는 지금까지 한 번도 겪어보지 못했는데, 심지어 콘솔창에 남는 오류 관련 정보가 없어서 따로 생성된 Test Summary 리포트 파일에 직접 들어가서 이슈를 파악해야 했다. Stack trace에는 아래와 같은 내용이 있었다.The following conflicting versions were detected:- org.junit.jupiter.api:..
초반에 개발을 배우기 시작했을 땐 객체지향 프로그래밍은 곧 SOLID 원칙을 따르는 프로그래밍인줄로만 알고 있었는데 Java 공부를 하면서 SOLID 이전에 기본적으로 4가지의 특징이 따로 있다는 걸 알게 됐다. 캡슐화 (Encapsulation)캡슐화는 객체의 속성과 메소드를 하나로 묶고 외부에서의 직접적인 접근을 제한하는 것이다. 따라서 데이터를 보호하고 객체의 상태를 관리하는 방법을 제공한다. 이를 통해 데이터의 무결성을 유지하고 원치 않는 외부 영향을 막을 수 있다. 자바에서는 아래와 같은 접근 제어자(access modifier)를 사용해 캡슐화를 구현할 수 있다:private: 클래스 내부에서만 접근 가능public: 모든 클래스에서 접근 가능protected: 같은 패키지나 상속받은 클래스에..