본문 바로가기

분류 전체보기

이클립스 Permgen space 에러 해결하기 java.lang.OutOfMemoryError : PermGen space 에러 해결법 다음과 같이 PermGen space 에러가 나는 경우가 있다. 말 그대로 메모리가 부족해서 나는 에러이다. Window > Preferences > Java > Installed JREs 클릭 Edit을 눌러 Default VM arguments에 -XX:MaxPermSize=512m 을 입력해준다. 이건 최대 Permanent Generation size를 의미하며, Out of Memory 오류 발생 시 size 조절을 해주면 되는 영역이다. 더보기
[iBatis/MyBatis에러] Caused by: org.xml.sax.SAXParseException: Element type "if" must be declared. Caused by: org.xml.sax.SAXParseException: Element type "if" must be declared. 다음과 같은 에러가 난다면, 아래를 고민해보자. 에러가 발생한 xml 파일을 열어보아서 태그가 있는지 확인해보자. 혹은 태그는 MyBatis2까지는 존재하지 않는다. (iBatis도 물론 존재하지 않는다) 는 혹은 로 대체 특정 값이 아닌, null인지 아닌지만 비교하고 싶을 때는 혹은 태그 이용. 는 로 대체해서 사용 에러가 난 코드 USER_NM = #USER_NM# 수정 후 AND USER_NM = #USER_NM# 더보기
MyBatis 에서 #{} 과 ${}의 차이 USER_NM = 홍길동이 담겨있다면, $의 경우 ''(쿼테이션마크) 없이 글자 그대로 들어간다. SELECT * FROM USER WHERE USER_NM IN ($USER_NM$) SELECT * FROM USER WHERE USER_NM IN (홍길동) #의 경우 파라미터가 String 형태로 들어와 자동으로 ''(쿼테이션마크)가 붙는다. 쿼리주입을 예방할 수 있어 보안 측면에서 유리하다. SELECT * FROM USER WHERE USER_NM IN (#USER_NM#) SELECT * FROM USER WHERE USER_NM IN ('홍길동') 더보기
[Linux/타임존 변경하기] 특정 시간대에 특정 코드가 발생하도록 설정해놓았는데 작동이 안된다면? - 타임존 설정을 살펴보자 일단 두가지를 살펴봐야 한다. 필자는 AWS EC2 서버를 이용중 이고 구동 서버는 톰캣을 사용하고 있으므로 아래 두개를 살펴 볼 것이다. EC2 타임존 톰캣 타임존 1. EC2 타임존 변경 EC2 서버의 기존 타임존은 UTC이다. 이는 세계 표준 시간으로 한국의 시간대가 아니다. 즉, 한국의 시간과는 9시간 차이가 발생한다. 이렇게 되면 서버에서 수행되는 JAVA 애플리케이션에서 생성되는 시간도 모두 9시간씩 차이가 나기 때문에 꼭 수정해야 할 설정이다. 서버의 시간을 한국 시간(KST)로 변경해보자. 다음 명령어를 차례로 수행하면 된다. sudo rm /etc/localtime sudo ln -s /usr/share/zoneinfo/Asia/Seoul /etc/localtime 2. 톰캣 타임존 변경.. 더보기
[Java] Map 객체에 담긴 value들을 전부 가져오고 싶은 경우 (key를 모르는 상황에서) 키를 알고 있다면 get() 로 간단하게 객체를 찾아오면 되지만, 저장된 전체 객체를 대상으로 하나씩 얻고 싶을 경우에는 다음 방법을 이용한다. keySet() 메소드로 모든 키를 Set 컬렉션으로 얻은 다음, 반복자를 통해 키를 하나씩 얻고 get() 메소드를 통해 값을 얻으면 된다. 1 2 3 4 5 6 7 8 9 Map map = new HashMap(); // 객체를 하나씩 처리 Set keySet = map.keySet(); // keySet() 메소드를 이용하여 key값들 얻기 Iterator keyIterator = keySet.iterator(); while(keyIterator.hasNext()) { String key = keyIterator.next(); Integer value = .. 더보기
[linux 에러] JAVA_HOME should point to a JDK not a JRE 보통 Maven 컴파일 시 발생하는 에러입니다. 1. 에러 원인 리눅스에 Maven을 설치한 후에, JAVA_HOME 환경변수를 설정해줘야 Maven이 JDK 위치를 찾아서 실행할 수 있습니다. Maven의 목표는 우리가 실행하려는 프로젝트의 소스 코드에 맞는 적합한 Java 컴파일러를 실행시키는 것이기 때문입니다. 만약, JAVA_HOME 환경변수를 설정하지 않았거나 제대로 된 JDK 위치를 가리키지 않은 경우, 다음과 같은 에러를 냅니다. mvn -version # Output... The JAVA_HOME environment variable is not defined correctly This environment variable is needed to run this program NB: JAV.. 더보기
[Maven 빌드 에러] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.5.1:compile (default-compile) on project musicchart: Compilation failure 에러 문구 Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.5.1:compile (default-compile) on project musicchart: Compilation failure bad path element "/root/.m2/repository/com/mchange/c3p0/0.9.5.2/mchange-commons-java-0.2.11.jar": no such file or directory 이 문구는 핵심이 아닙니다. 이건 각자 상황마다 다르게 나타날 수 있습니다. bad path element..~ 정도만 똑같을 듯 아무튼 위의 에러문구에 주목! 에러 원인 에러 문구를 해석해보자면 말그대로 본인의 프로젝트.. 더보기
[Git] 옛날 커밋으로 되돌아가기 - reset 작업 중 실수가 있어서 이전 이력의 특정 커밋으로 되돌리고 싶다면 해당 커밋을 우클릭 후, '이 커밋으로 초기화' 를 눌러줍니다. 우리가 보통 하고싶은 깔끔한 리셋은 [Hard] 모드입니다. 지금 작업 공간이 더럽든, 깨끗하든, 그냥 깔끔하게 저 커밋으로 히스토리를 돌리겠다는 말이죠. 반면, [Soft], [Mixed] 모드는 시간을 되돌리긴 하지만 그 이후의 변경사항은 작업공간에 남겨두겠다는 소리입니다. 저는 [Mixed] 로 해보겠습니다. [Soft] 와 [Mixed] 둘다 변경사항을 남겨두지만 둘의 차이점을 보자면 .. 되돌린 커밋시점 이후의 변경이력이 [Soft] 는 스테이지에 올려져 있고, [Mixed] 는 스테이지로부터 내려가 있습니다. 저의 경우 [Mixed] 를 했기 때문에 스테이지에서 전.. 더보기