Posts

Oracle VirtualBox 설치 방법.

Image
Oracle VirtualBox는 운영체제 가상화 프로그램 으로, 현존하는 다양한 운영체제를 설치할 수 있습니다. 가상화 프로그램은 멀티부팅을 하지 않아도 다른 운영체제를 설치할 수 있다는 장점이 있습니다. 예를 들어, Window10이 설치된 시스템에 가상화 프로그램을 통해 Linux 운영체제를 설치 및 실행할 수 있습니다. Oracle VirtualBox는 Innotek이라는 회사에서 개발 했다가 썬마이크로시스템즈에 인수되었고, 썬마이크로시스템즈는 Oracle에 인수함으로써 현재는 Oracle에서 무료로 배급 을 하고 있습니다. 이제 Oracle VirtualBox를 설치 및 실행을 해보도록 하겠습니다. Step1. Oracle VirtualBox 다운로드 페이지 에 접속합니다. Step2. 설치 exe 파일 실행한 후,  [Next] 클릭합니다. Step3. [Next] 클릭합니다. 설치 커스텀 창입니다. 이 튜토리얼에서는 특별한 이유 없이 Next를 클릭하지만, 필요할 경우 USB 지원여부, NETWORK지원여부, 파이썬 설치 여부 등을 별도로 설정해줍니다. Step4. 모두 체크선택 후 [Next] 클릭합니다. Step5. [Yes] 클릭하여 설치 계속 진행합니다. Step6. [Install] 클릭합니다. <설치 완료한 화면.> Step8. 리눅스 우분투 가상화머신을 만듭니다.  Oracle VirtualBox를 실행하고, 창에서 우측 상단에 [새로 만들기(N)] 을 클릭합니다. Step9. 가상 머신 만들기 창에서 "이름" , "종류" , 그리고 "버전" 을 입력 후 [다음] 클릭합니다. Step10. 메모리 크기는 1024MB로 지정 한 후  [다음] 클릭합니다. Step11. [지...

exception in thread main java.lang.unsupportedclassversionerror unsupported major.minor version 52.0

Image
증상 :  CLI 환경에서 java 어플리케이션 exe 를 실행하였더니 다음과 같은 에러가 발생하였다. 원인 :  실행한 exe 파일의  JDK 버전은 1.6 을 사용하고 있는데   시스템에 설치된  JDK 는 1.8 을 사용중이었다.  즉 JDK 버전이 서로 호환되지 않아 발생한 문제였다. 해결책 :  Java 어플리케이션 exe 파일을 시스템에 설치된 JDK 버전에 맞추거나, 시스템의 JDK를 다운 버전하거나 아니면, Java 어플리케이션을 exe파일로 만들때, JRE와 같이 배포하여 시스템 JDK에 영향을 받지 않고 정상실행되도록 하는 방법이 있다. 참고 : version 옆에 52.0 숫자가 의미하는 것은 아래 표와 같이 jdk1.8 버전을 의미한다 .

Map을 순서대로 넣고 싶을 때 LinkedHashMap을 사용하는 방법.

Map을 순서대로 넣고 싶을 때 LinkedHashMap을 사용하는 방법. 문제상황 : 다음과 같이 HashMap 을 사용하여 key, value 값을 순서대로 입력을 하였다 . Map<String, Integer> fruitPriceMap = new HashMap<String, Integer>(); fruitPriceMap .put( "Apple" ,       1200); fruitPriceMap .put( "Strawberry" , 1400); fruitPriceMap .put( "Grape" ,       1500); fruitPriceMap .put( "Banana" ,      1000); fruitPriceMap .put( "Melon" ,       1800); fruitPriceMap .put( "Peach" ,       2000); 이후 다음과 같은 코드를 작성하여 hashMap 에 입력한 순서대로 key, value 값을 출력하고 싶었다 . for (String key : fruitPriceMap .keySet()){ System. out .println( "key:" + key + ", value:" + fruitPriceMap .get( key )); } 내가 원했던 결과는 다음과 같았다 . key:Apple, value:1200 key:Strawberry, value:1400 key:Grape, value:1500 key:Banana, value:1000 key:Melon, value:1800 key:P...

java.sql.SQLException: Got minus one from a read call

Image
Symptom) When I ran servlet web application, I got the error message "Got minus one from a read call" .   java.sql.SQLException : Got minus one from a read call at oracle.jdbc.driver.T4CConnection.logon( T4CConnection.java:412 ) at oracle.jdbc.driver.PhysicalConnection.<init>( PhysicalConnection.java:531 ) at oracle.jdbc.driver.T4CConnection.<init>( T4CConnection.java:221 ) at oracle.jdbc.driver.T4CDriverExtension.getConnection( T4CDriverExtension.java:32 ) at oracle.jdbc.driver.OracleDriver.connect( OracleDriver.java:503 ) at java.sql.DriverManager.getConnection(Unknown Source) at java.sql.DriverManager.getConnection(Unknown Source) at UserDao.getUser( UserDao.java:27 ) at LoginServlet.doPost( LoginServlet.java:30 ) at javax.servlet.http.HttpServlet.service( HttpServlet.java:660 ) at javax.servlet.http.HttpServlet.service( HttpServlet.java:741 ) Root Cause and Solution) This one is quite complicated problem. So ther...

java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver

Image
Symptom) I made a sample servlet web application. The application works along with Oracle DBMS. I tried connecting to DB using jdbc programming. When the application was running, I got the error message below. java.lang.ClassNotFoundException : oracle.jdbc.driver.OracleDriver 2. Servlet doGet() stop at org.apache.catalina.loader.WebappClassLoaderBase.loadClass( WebappClassLoaderBase.java:1358 ) at org.apache.catalina.loader.WebappClassLoaderBase.loadClass( WebappClassLoaderBase.java:1180 ) at java.lang.Class.forName0( Native Method ) at java.lang.Class.forName(Unknown Source) at UserDao.getUser( UserDao.java:26 ) at LoginServlet.doPost( LoginServlet.java:30 ) at javax.servlet.http.HttpServlet.service( HttpServlet.java:660 ) at javax.servlet.http.HttpServlet.service( HttpServlet.java:741 ) Root Cause) I forgot to import jdbc library to the web application project. So, solution is just add jdbc library to your project. There are 2 ways to do it....

\t Regular Expression이 안먹는 경우

문제점 : 다음 아래의 문자열의  탭(\t)이 들어간  모든 공백을 제거하려고 하였다 . String chkLine = "$${ Pst0x12002001 }          $${CODE}          $${FLASH}          $${INTERN}"; chkLine = chkLine. trim() ; 예상 했던 결과는 chkLine 문자열이 $${ Pst0x12002001 }$${}$${CODE}$${FLASH}$${INTERN}   형태로 나올 것이라고 생각했다 . 하지만 실제 디버깅 한 결과 , $${ Pst0x12002001 }          $${CODE}          $${FLASH}          $${INTERN} 가 나왔다 . Trim() 이 먹히지 않았던 것이다 . 원인 : \t   문자가 포함되어 있는 문자열의 경우 , trim() 이 안먹힌다 . 따라서 trim() 대신에 replaceAll() 을 사용하여 , 탭 문자를 다른 문자로 치환을 해줘야 한다 . 해결책 : chkLine.trim()   대신 chkLine.replaceAll("\\ s", ""); 을 사용하면 된다 . 여기서 "\\s" 는 빈 공백을 찾아주는 Regular Expression 이다. 적용결과: $${ Pst0x12002001 }$${CODE}$${FLASH}$${INTERN} $$ Regular Expression이 안먹는 경우 [...

$$ Regular Expression이 안먹는 경우

문제점 : 다음 아래의 문자열을 "$$" 구분자로 parsing 하여 String 배열 자료구조에 저장하려고 하였다 . String chkLine = "$${Pst0x12002001}$${CODE}$${FLASH}$${INTERN}"; tokens = chkLine.split("$$"); 예상 했던 결과는 tokens String 배열에 { Pst0x12002001 } ,{CODE},{FLASH},{INTERN}  이 담겨 있을 것이라고 생각했다 . 하지만 실제 디버깅 한 결과 , $${ Pst0x12002001 }$${CODE}$${FLASH}$${INTERN} 가 나왔다 . Split 이 먹히지 않았던 것이다 . 원인 : Regular Expression 이 잘못되었기 때문이다 . String 클래스에서 인자값으로 받아 처리하는 Regular Expression 은 "$$" 를 지원을 안했던 것이다 . 해결책 : "$$" Regular Expression 을 사용하여 문자열을 split 하려면 , chkLine.split("$$"); 대신 chkLine.split("\\$\\$"); 를 사용해야 한다 . 적용결과: { Pst0x12002001 }{CODE}{FLASH}{INTERN} \t Regular Expression이 안먹는 경우 [Java] Install JDK and configure Environment variable [Java] Install Eclipse IDE and run HelloWorld java app javac is not recognized as an internal or...

Popular posts from this blog

$$ Regular Expression이 안먹는 경우

exception in thread main java.lang.unsupportedclassversionerror unsupported major.minor version 52.0

java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver