초보자의 입장에서 ClassCastException이 발생하는 경우와 에러 해결 방법을 알아보자. Exception을 만났을 때 참고하기 가장 좋은 자료는 Java API 문서와 구글링을 통한 원인과 해결방법 검색이다. 먼저 API를 살펴보자. 구글에 검색할때는 "java api ClassCastException" 정도로 검색하면 된다. https://docs.oracle.com/javase/9/docs/api/java/lang/ClassCastException.html ClassCastException (Java SE 9 & JDK 9 ) docs.oracle.com API 문서를 살펴보게 되면 RuntimeException을 상속받는 클래스로 나온다. RuntimeException을 상속받는 Exce..
요즘 Exception에 대해서 정리하는거에 재미가 들렸나보다. 오늘은 ArithmeticException에 대해서 알아보자. ArithmeticException의 원인 ArithmeticException의 원인은 단순하다. "java api ArithmeticException" 이런식으로 구글에서 검색해보자. 맨 상단에 oracle사의 javase api 문서가 나오게 된다. https://docs.oracle.com/javase/8/docs/api/?java/lang/ArithmeticException.html Java Platform SE 8 docs.oracle.com Thrown when an exceptional arithmetic condition has occurred. For exampl..
오늘은 FileNotFoundException 에러의 원인과 해결 방법을 알아보자. 어제는 indexOutOfBound에 대해서 했고 Exception 3대장 두녀석은 포스팅을 했으니 이녀석도 정리 해야겠단 생각이 들었다. 정말 별거 없는 에러다. 이름만 봐도 에러 원인과 해결 방법을 알수 있는 놈이기도 하고 이걸 검색했다는 건 좀 더 딥한 그 무언갈 원했다는 느낌적인 느낌이 있다. ㅎㅎㅎ FileNotFoundException 원인은? java.io.FileNotFoundException로 발생하는데 말 그대로 파일을 찾을수 없는데 있다. 파일이 있는지 경로를 뒤져서 파일이 있는지 찾아보면 된다. 파일이 있어도 파일 읽기, 쓰기 권한이 없어서 발생할 수도 있으니 파일이 있다면 권한도 체크해보자. Fil..
오늘은 indexOutofBoundException를 만나는 이유와 에러 해결 방법을 알아보도록 하자. 자바로 코딩을 하는 사람들이면 늘상 만나는 Exception 중에서 3형제를 꼽는다면 꼭 안에는 들어갈법한 녀석이다. 안그런가? ㅎㅎ 얼마전인가 이 짤을 보고서는 피식 웃었던 기억이 난다. 그만큼 공감이 가는 짤이라고나 할까. indexOutofBoundException 발생하는 이유는? 저녀석이 나오는 이유는 배열이나 문자열을 접근할 때 가진 길이보다 높은 인덱스를 엑세스하려고 할때 나오는 예외다. 즉, 예를 들자면 길이가 3인 배열을 가지고 있는데 ( int[] a = new int[]{1,2,3}; ) a[0], a[1], a[2] 까지는 접근이 되지만 a[3]이상의 숫자로 접근을 시도하려고 하면..
개발을 하다보면 가끔 ClassNotFoundException를 만날수 있는데 어떤 상황에서 ClassNotFoundException가 발생하는지 정리해보기로 하자. 1) ClassNotFoundException 원인 동적으로 클래스를 문자열로 로딩을 시도하다가 클래스가 없는 경우 발생. 1) Class.forName( String className ) 2) ClassLoader.loadClass( String className ) 외에 String으로 클래스를 찾는 여러 메소드들... 크게 이 두가지 클래스를 사용하는 경우에 발생한다. 요즘에는 프레임워크나 라이브러리 사용으로 Class.forName을 많이 사용하지는 않겠지만 옛날에는 JDBC를 직접적으로 연결할 때 Class.forName으로 JDB..
얼마 전 업무를 하다 java.lang.NoClassDefFoundError 를 만났는데 상당수 ClassNotFoundException와 헷갈리는 부분이 있을 것 같다. 과거에도 이 에러를 많이 만났지만 그때마다 어찌저찌 해결만 했을 뿐 명확히 포스팅으로 정리해본적이 없어서 정리를 해본다. 1. 원인 java.lang.NoClassDefFoundError가 발생하는 이유는 컴파일 환경에서는 클래스 참조가 되었지만 실행 환경에서는 해당 클래스를 찾을수 없는 경우 발생한다. 그래서 코딩을 할때는 아무 문제가 없다가 spring boot나 was로 실행 시킬 때 만나거나, PC에서 개발 할때는 아무 문제가 없다가 서버에 올렸을 때 만나게 된다. 재연을 해보고 싶다면 클래스 두개를 만들어 하나에 종속되게 만들..
자바 8이 나온지 언 5년 정도가 지났다. 지금은 자바 12버전까지 나와있으니(현재 19년 8월 5일) 현재 업무로 사용하는 메이저 버전은 자바 6이다. 물론 7도 있고, 일부 8도 있긴 하지만 메이저 사용 버전은 6이다. 아마도 조만간 메이저 버전이 업데이트 될거다. 차세대 시스템을 하게 될테니 말이다. ( 뭐, 그게 아니더라도 ... ) 사실 자바 버전업에 대해서 무관심했다. 큰 변화가 아니라고 생각했고, 사용할 때가 되어서 익히면 된다라는 생각이 있으니까. 대충 맞는 생각이라 본다. 미리 익히는 기술은 어차피 깊이가 낮고 poc 수준 이상이 될수도 없을 뿐더러 시간이 지나면 완전히 잊혀질 가능성이 높기에... 내용에 대한 설명보다는 느낀 후기에 대해서 정리해본다. 일반 책의 대부분의 내용에서는 기존..
요즘 시간이 날때 간단한 코딩을 하고 있다. 실무를 하면서 사실 이런 프로그램을 만들일은 없지만 기록은 그래도 의미가 있다. 두 수 n과 m이 주어졌을 때 두 수의 최대공약수와 최소공배수를 구하는 코드다. 너무 오랜만이라 잠깐 화면을 보고 멍해있었다. ㅎㅎ public static int[] p5(int n, int m) { int min = n > m ? m : n; int[] rtnInt = new int[2]; for(int i = min; i > -1;i--) { if( n % i == 0 && m % i == 0 ) { rtnInt[0] = i; rtnInt[1] = n*m/i; break; } } return rtnInt; } 두 수 중에 작은 수를 기준으로 수를 하나씩 내려가며 나머지를 ..
1) 릿코드(leetcode.com) 간략 소개 릿코드(leetcode.com)는 여러가지 코딩 언어로 1,000가지가 넘는 알고리즘 문제를 풀어볼 수 있는 알고리즘 풀이 사이트라고 할 수 있다. 문제도 계속해서 추가되고 있다. LeetCode - The World's Leading Online Programming Learning Platform Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 문제의 양이 방대하고 종류가 많아서 개발자가 되기 위한, 혹은 이직을 하려는 개발자가..
자바 언어로 프로그래밍을 하다보면 가장 자주 만나는 오류 중에 하나가 이 널포인트 익스셉션(NullPointerException)일거다. 일단 왜 발생하는지 원인에 대해 알아보자. 일단 Exception도 클래스기 때문에 공식 api 문서를 보고 판단해보자. https://docs.oracle.com/javase/10/docs/api/index.html?overview-summary.html 여기서 NullPointerException을 찾아보면...내가 영어를 무지 못하긴 하지만 번역기와 그간의 짬으로 약간은 이해한다. 한번 해석해보도록 하자. Thrown when an application attempts to use null in a case where an object is required. Th..