Engineering/Java 28

OpenJDK download 사이트

어느 순간부터 구글에서 OpenJDK 를 다운받을려고 검색하면 oracle 만 나온다.쉽게 다운로드 하기 위해 https://jdk.java.net/archive/ 이 사이트로 접근하는 기록을 남긴다. 여러 OS 용 zip 으로 묶인 파일들을 지원한다. 다운받고 풀어서 JAVA_HOME 설정만 잘 맞추면 된다.  참고https://www.theserverside.com/blog/Coffee-Talk-Java-News-Stories-and-Opinions/How-to-install-Java-21

Engineering/Java 2024.11.14

Files.lines(path) 는 잘 알고 사용하자.

Files.lines(filePath).forEach(line -> ...) 이런 코드를 사용하는 프로그램이  참조하는 파일 항상 삭제가 안되는 버그가 발생했다. File symbolFile = new File("C:\\Users\\user\\readSymbol\\temp\\symbol.txt"); Files.lines(symbolFile.toPath()).forEach(line -> { if (line.contains("GetBranchName")) { log.debug("GetBranchName:{}", line); } }); 프로그램 종료 시점에 임시로 생성했던 temp 디렉토리를 지우는 로직이 ..

Engineering/Java 2024.07.11

Column cannot be null 오류 해결

서비스 운영 중에 아래와 같은 오류가 발생했다. Column 'CREATE_DATETIME' cannot be null org.springframework.dao.DataIntegrityViolationException: could not execute statement; SQL [n/a]; constraint [null]; nested exception is org.hibernate.exception.ConstraintViolationException: could not execute statement at org.springframework.orhttp://m.jpa.vendor.HibernateJpaDialect.convertHibernateAccessException(HibernateJpaDial..

Engineering/Java 2024.01.04

class path resource FileNotFoundException in jar

src/main/resource/ 디렉토리 하위에 "path/data.json" 경로의 파일을 넣어두고 아래와 같이 getFile() 을 사용하면 local 환경(inteliJ 같은 개발툴)에서 실행할때는 아무 문제가 없다. (실제 파일 경로가 있으니..)File file = new ClassPathResource("path/data.json").getFile(); 그런데, jar 로 빌드 패키지를 만들어서 배포해서 java -jar 로 실행하면 "java.io.FileNotFoundException" 이 나오면서 프로그램이 종료한다.2023-11-16 00:11:12.096 [main] ERROR [http://com.test.app.component.ReadComponet.init:38] - Fail..

Engineering/Java 2023.11.16

javac: invalid target release: 11 문제 해결

- maven pom 설정 maven-compiler-plugin true 3.6.2 true ${java.version} ${java.version} true UTF-8 ${java.version}  intelliJ 프로젝트 설정 - 프로젝트 - SDK - java 11 로 맞췄는데, mvn 빌드 시 이런 오류가 발생한다면[ERROR] javac: invalid target release: 11[ERROR] Usage: javac  mvn 명령어가 사용하는 java 버전을 확인해보자.JAVA_HOME 을 java 11 이 설치된 폴더로 변경 및 PATH 설정> set JAVA_HOME c:\java11> set..

Engineering/Java 2023.07.19

java 11 설치 on Rocky Linux 8.6

CentOS 지원이 종료되는 문제로 Rocky Linux 로 많이 이동 중이다. Rocky Linux 에 기본으로 설치된 java 8 을 11 로 변경하기 위해 했었던 과정을 남겨 본다. 1. java 11 (Open JDK 11) 을 설치 - dnf 로는 java 11 openJDK 가 안 보인다. yum 으로 설치한다. # yum install java-11-openjdk java-11-openjdk-devel 2. 기존 java 8 에서 java 11 로 변경(update-alternatives) - update-alternatives 명령어로 사용하는 java 버전 변경. 이전 글 참고. # update-alternatives --config javac # update-alternatives --..

Engineering/Java 2023.05.10

maven 에 if condition 추가

maven 으로 빌드할때 특정 옵션일 경우, 다르게 동작시키고 싶은 경우 - A 옵션이 true 일때, a 파일을 지우고 아니면 남기고 싶다 pom.xml 에 배포 환경마다 profile 관련 처리를 하는 maven-antrun-plugin 이 포함되어 있을텐데, 그 configuration 을 수정하는게 맞다. maven-antrun-plugin 은 1.7 을 사용했다. false ant-contrib ant-contrib 1.0b3 deployTarget : ${deployTarget} project.build.outputDirectory : ${project.build.outputDirectory} ... ... maven 빌드시 다음과 같이 옵션을 추가할 수 있다. maven clean packa..

Engineering/Java 2020.12.22

The POM for com.microsoft.sqlserver:sqljdbc4:jar:4.0 is missing, no dependency information available

pom.xml 에 sqljdbc4 를 추가를 했는데도, mvn package 에서 해당 dependency 를 찾지 못한다는 메시지가 나오는 경우 [INFO] --------------------------------[ jar ]--------------------------------- [WARNING] The POM for com.microsoft.sqlserver:sqljdbc4:jar:4.0 is missing, no dependency information available 원인은 Microsoft 에서 central repository 를 제공하지 않는다고 하는데, 저장소에서 jar 은 수동으로 다운로드가 가능한데 왜 안되는지는 알 수 없다. 1. central maven repository ..

Engineering/Java 2020.10.28

gradle multi build for war

gradle muliti project 인 경우 sub 모듈만 따로 war 로 빌드를 하기 위한 내용을 정리해본다. 구성 - server-api : API 서버 - common : 공통 모듈(domain, dao) gradle 5.X 이상일 경우 - build.gradle (root) project(':server-api') { dependencies { compile project(':common') } } server-api, common 을 가진 project 에서 server-api 만 war 로 빌드한다. - build.gradle(:server-api) apply plugin: 'war' bootWar.archiveName = 'multiplatform-auth-server-api.war' d..

Engineering/Java 2020.10.05

logger info {} 사용

레거시 코드를 확인하다가 특이한 코드를 발견해서 기록 차원에서 남겨 본다. @Test public void logTest() { Map map = new HashMap(); map.put("key1", "data1"); map.put("key2", "data2"); map.put("key3", "data3"); logger.info("map={}, secondData={}", new Object[]{map, "thisisseconddata"}); // Output : // map={key1=data1, key2=data2, key3=data3}, secondData=thisisseconddata logger.info("map={}, secondData={}", map, "thisisseconddata")..

Engineering/Java 2020.08.06