Java
embed tomcat 설정하기
인텔리제이(Intellij)에서 내장톰캣을 사용하려면 얼티밋버전이어야한다는데, 사실 얼티밋버전이 아니더라도 내장톰캣을 사용할 수 있다! (조금 귀찮기는 하지만) 난 참고로 얼티밋 버전이지만 어떻게 될 지 몰라서 일단 설정법을 올려놓는다. 의존성 설정 (pom.xml) 1.8 1.8 8.5.23 org.apache.tomcat tomcat-catalina ${tomcat.version} org.apache.tomcat.embed tomcat-embed-core ${tomcat.version} org.apache.tomcat.embed tomcat-embed-jasper ${tomcat.version} org.apache.tomcat tomcat-jasper ${tomcat.version} org.apach..
H2 데이터베이스 의존성 문제
무슨 에러가 떴었냐면 java.lang.RuntimeException: Failed to load driver class org.h2.Driver in either of HikariConfig class loader or Thread context classloader 이라는 익셉션이 발생했다 말그대로 런타임 익셉션이었는데.. 이건 내가 의존성 추가해줄 때 추가를 미처 하지 못했다. H2 는 메모리에 쓰는 DB다, 즉 런타임시에만 사용하는 DB라고 볼 수 있다. com.h2database h2 1.4.200 runtime scope를 runtime으로 바꿔주는 것으로 해결한다.
자바 Jsoup 웹 크롤링 EUC-KR encoding 문제
데이터 읽을 일이 있어서 크롤링하는데 페이지가 EUC-KR로 되어있어 이거 디코딩하는방법을 몰라서.. 시간이 많이들었다. 제목에는 Jsoup만 써놨지만, org.apache.http 패키지(http코어)를 쓸 때도 encoding문제를 해결 할 수 있다. 일단 제목에 나온대로 Jsoup부터 해결방법을 제시하겠다. --- JSoup 의존라이브러리 --- org.jsoup jsoup 1.12.1 -- 아파치 코어 의존라이브러리 -- org.apache.httpcomponents httpcore 4.4.12 org.apache.httpcomponents httpclient 4.5.10 commons-logging commons-logging 1.2 공통 필드 URL객체는 따로 적지않았다. 링크 문자열을 주기 ..
MySQL JDBC 연동 시 타임존 에러
java.sql.SQLException: The server time zone value '���ѹα� ǥ�ؽ�' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a more specifc time zone value if you want to utilize time zone support. MYSQL로 로컬프로그램 JDBC 연동하는데 타임존 에러가나길래 찾아봤더니 mysql-connector-java 이슈라고한다. 버전이 높아지면서 타임존 이슈에러가 발생한다고한다...
Maven Project 빌드 시 (CLI 환경) 각종 설명 및 팁
CLI 환경에서 메이븐 프로젝트를 만들 시 선행조건 - 메이븐 설치 - 메이븐이 제시하는 폴더 구조를 만들어주어야함 - pom.xml 정의 https://maven.apache.org/guides/getting-started/maven-in-five-minutes.html Maven – Maven in 5 Minutes Java 9 or later By default your version of Maven might use an old version of the maven-compiler-plugin that is not compatible with Java 9 or later versions. To target Java 9 or later, you should at least use version 3...
로그백 실행방법(logback, java)
일단 공식홈페이지에서 다운로드 받을수 있다는데 난 링크가 안뜬다 ㅡㅡ; 그래서 여기에 첨부해놓고 두고두고 쓰려고 한다. 사용에 필요한 파일은 3가지 파일이다 logback-classic.jar logback-core.jar sfl4j-api.jar 미리 작업한 소스코드는 다음 내용과 같다. package kr.co.test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; class Hello { private static Logger logger = LoggerFactory.getLogger(Hello.class); public static void main(String[] args) { logger.info("Hello World!!"); } } ..
자바 콘솔에서의 다양한 실행방법(jar, 빌드)
선행작업 환경변수 %JAVA_HOME\lib;.; 여야함 // 이게 이클립스 오류의 주범이기도 했었다 ㅡㅡ; 나의 경우엔 콘솔로 빌드하다 오류발견.. javac (파일명).java java (파일명) - 먼저 빌드하고 class파일로 만들어주어야한다. jar 자바 아카이브 파일 (여러개의 파일을 하나로 묶어서 관리하기 위함) ex ) jar cf test.jar kr\* (생성 옵션, 그리고 생성할 jar파일 명, 묶일 파일들) 패키지 지정시 cp 명령어를 통해 실행해야한다.. 근데 jar파일을 이용하면 바로 실행가능! 메인 클래스가 무엇인지 알려주는 manifest.txt 파일이 필요하다 manifest.txt에서 Main-class: kr.co.test.Hello ( 풀 패키지명, 클래스 명 ) 작성..
자바 익명클래스와 자바 람다 (Java Anonymous class, Java Lambda) 1편
자바의 람다는 익명클래스와 매우 비슷한 모습을 하고있다. 그러나 둘은 아주 다르다. 익명클래스 일단 익명클래스는 어쨌거나 사용할 때 보통 객체와 동일하게 힙에 할당이 된다. 메인메소드 내에서 익명클래스를 사용하면 컴파일 시에 $1, $2 등과 같은 순서대로 클래스파일이 생성이 된다. 예시로, 평범한 인터페이스를 하나 선언한다. 추상클래스나 일반 클래스도 상관없다. interface Test{ public int getNum(); } 그 후, 메인에서 바로 사용하기 위해 재정의를 해준다. public class LambdaTest { public static void main(String[] args) { Test t1 = new Test(){ public int num = 10; public int ge..