* 개요 java.lang.NoClassDefFoundError: org/antlr/v4/runtime/TokenSource ... 또는java.lang.NoClassDefFoundError: org/antlr/v4/runtime/CharStream * 참고버전 3.2 에서 비슷한 현상https://bugzilla.redhat.com/show_bug.cgi?id=1286387 딱히 관련은 없었음 * 환경eclipsemavenhibernate 3.6.4Spring MVC * 원인- hibernate 3.6.4 에서 antlr 2.7.1 을 쓰고 있었음.(pom.xml => dependency hiearachy 에서 확인 ) - 위 antlr 과 별도로 antlr 4.7.1 jar 파일 직접 build pa..
* 개요원 프로젝트를 A라고 가정.A 에 Antlr 이용한 기능 넣고 싶은데, 새로운 언어 개발 테스트를 프로젝트A에서 진행하기 싫다.프로젝트 B를 생성하여 ANTLR 이용한 언어 개발하고완성된 완성된 파일만 A에서 가져다 쓰고 싶다. 1. 프로젝트 B 생성기본적인 ANTLR 생성 방법과 동일함. - ANTLR 시작하기http://dogcowking.tistory.com/64 2. B에서 새 언어 개발g4 파일 생성 후 문법 개발.g4 파일은 지정 없으면 (default package) 에 자바파일을 생성하게 된다.따라서 차후 반영될 패키지를 미리 지정하는 것이 좋다. - 패키지 지정http://dogcowking.tistory.com/65 3. B에서 A의 클래스의 사용이 필요한 경우(기본 개체 같은 ..
* 개요 - Project build 가 되지 않음 - JUnit Test 실행시 InitializationError Project Clean 한 경우라면 ClassNotFound (프로젝트 빌드가 안되어 class 파일 생성 안되니까 나는 오류들)- Markers(탭) 에서 다음 오류 확인A cycle was detected in the build path of project '180612IrLang'. The cycle consists of projects {150301CidogIr, 180612IrLang}180612IrLangBuild pathBuild Path Problem * 원인 프로젝트 A, B 두개 있다고 가정할때 Java build path => Project 에 A에서 B를 추가하고,..
계속 작성중인 글임. * 개요 - 리스너, 비지터 동일하게 파싱 트리 노드 순회 위한 메서드는 라는 클래스를 파라메터로 받는다. - 이 클래스들은문법 이름이 Hello 라고 가정할때HelloParser 클래스 아래 static class 로 정의된다. - 이 클래스들은 ParserRuleContext 클래스를 상속받는다. * 예제 문법 Hello grammar Hello;r : 'hello' myId ;myId : ID; ID : [a-z]+ ; WS : [ \t\r\n]+ -> skip ; 기본 문법에서 myId 룰 추가함.. (child 테스트 하려고..) * parserRuleContext.getChild() 하위 노드의 룰 컨텍스트를 가져온다하위 노드가 렉싱룰 또는 텍스트 직접 입력한 경우 Ter..
* Visitor 와 동일한 예제 사용 (Hello) http://dogcowking.tistory.com/186 * 리스너 정의 - VIsitor 와 마찬가지로 인터페이스 HelloListener 와 이를 구현한 HelloBaseListener 가 자동 생성됨. 이를 활용하기 위한 HelloMyListener 를 다음과 같이 정의해보면... public class HelloMyListener extends HelloBaseListener {@Override public void enterR(@NotNull HelloParser.RContext ctx) { }@Override public void exitR(@NotNull HelloParser.RContext ctx) { } // ... 다른 룰 생략}..
비지터 리스너 메서드 반환값 O (비지터 선언시 제너릭으로 해줘야 함) X child 호출 별도로 해줘야 하나? O (visitChildren() 호출해야...) X 룰 시작/끝 메서드 별도로 있나? X (룰마다 1개 메서드) O (enterXXX, exitXXX 로 따로 있음) alternative 선언시 룰 대신 얼터너티브로 받음 동일 노드 순회시 다른 클래스 불필요.. 비지터.visit() 로 독립적 사용 ParseTreeWalker 이용해야.. 기타 메서드 - visitErrorNode()visitTerminal()
* 오류 내용 org.springframework.dao.InvalidDataAccessResourceUsageException: could not insert: [com.cidog.bbs.model.BbsRank]; SQL [insert into bbsrank (type1, type2, type3, typeLong1, rank, cnt, ranker, rankerLong) values (?, ?, ?, ?, ?, ?, ?, ?)]; nested exception is org.hibernate.exception.SQLGrammarException: could not insert: [com.cidog.bbs.model.BbsRank]at org.springframework.orm.hibernate3.Ses..
Class Clr {...@ElementCollectionpublic List cioIds; ...} * 개요1. clr1 이 있음. cioIds는 Clr_cioIds 란 테이블로 별도 저장됨. 2. clr2 를 생성clr2.cioIds = clr1.cioIds 3. clr2 를 저장 - 결과 : clr2 의 cioIds 는 정상적으로 저장되지만,원본인 clr1 의 cioIds 가 삭제됨 * 문제해결clr2.cioIds =... 형식 대신clr2.setCioids(clr1.cioIds) 로 대입함. - cioIds 단순한 Long 이지만, Hibernate 안 에서는 Proxy 객체인듯함.저장시 set 함수 아닌 그대로 대입시에는 clr1 의 객체를 가져다쓰게 되어서해당 Long 객체의 주인이 clr1 ..
ERROR: org.hibernate.id.enhanced.TableStructure - could not read a hi valuejava.sql.SQLSyntaxErrorException: Table '130514cidogir.hibernate_sequence' doesn't exist * 오류 원인@Id 선언을 auto 로 했다면, 하이버네이트가 자체적으로hibernate_sequence테이블 가지고 있으면서 ID 를 생성해줌이때 이 테이블을 삭제하면 발생하는 오류 @GeneratedValue(strategy=GenerationType.AUTO) * 해결- 해당 테이블을 만드는 방법도 있겠지만... @Id@GeneratedValue(strategy=GenerationType.IDENTITY) pu..
org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: 클래스명 * 원인A클래스가 B에 대한 FK 를 가지고 있음. (OneToOne) SELECT FROM A WHERE A.B_ID = ?실행시 Restrictions.eq("B_ID", B객체) 해야 함. B객체를 ID값만 임의 지정한 임시객체를 만들어서 넣었기 때문이었음. * 해결B객체를 DB로부터 직접 불러와서 사용( ex : Restrictions.eq("B_ID", findB(B의ID)) ) * 다른 해결책http://cpdev.tistory.com/85 @On..
Fri Jul 06 06:10:05 KST 2018 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set.For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'.You need either to explicitly ..
InputStream stream = new ByteArrayInputStream(input.getBytes(StandardCharsets.UTF_8));lexer.setInputStream(CharStreams.fromStream(stream, StandardCharsets.UTF_8));parser.setInputStream(new CommonTokenStream(lexer)); https://stackoverflow.com/questions/18110180/processing-a-string-with-antlr4 참고 : 스트림 그대로 다시 사용할땐lexer.reset()
톰캣 힙 메모리 올리기 * 개요 - 새로만든 Spring MVC 용 프로그램이 Exception in thread “main”: java.lang.OutOfMemoryError: Java heap space 보이며 동작하지 않음.- 톰캣의 힙 사이즈 올려줄 필요 있다고 생각됨. #tomcat memory #톰캣 메모리 * 환경Ubuntu 16.04Tomcat 8.5 * Tomcat 이 사용중인 Heap memory size 확인 1. jMap 설치sudo apt install openjdk-8-jdk-headless 2. tomcat8 의 pid 확인ps -aux | grep tomcat - 참고 : PID 확인https://m.blog.naver.com/PostView.nhn?blogId=post_hu..
Session s= getSession();Criteria c = s.createCriteria(CiClst.class);c.add(Restrictions.in("clrId", clrIds));List r = c.list();s.close(); java.lang.ClassCastException: java.math.BigInteger cannot be cast to java.lang.Long * 원인clrIds 가 Hibernate - SQL 통해 가져온 리스트였고, SQLQuery 통해 가져온 것.- (Criteria나 Query 가 아닌... ) SQLQuery 로 가져올 경우 Long 이 아닌 BigInteger 로 가져오게 됨.- 이걸 Long 으로 바꿔서 리스트에 넣었어야 했는데, 그렇지 않음...
String sPath = System.getProperty("java.class.path");System.out.println(sPath);// 결과 : /home/udell/workspace/170112ClusteringEx/target/test-classes:/home/udell/workspace/170112ClusteringEx/target/classes:/home/udell/.p2/pool/plugins/org.junit_4.12.0.v201504281640/junit.jar:/home/udell/.p2/pool/plugins/org.hamcrest.core_1.3.0.v201303031735.jar:... // 분리String[] classpathEntries = sPath.split(File..
* 개요WAS에서 사용할 디렉토리 명을 하드코딩 하지 않고환경 변수로 지정해서 넘겨주고 싶었음 * 환경Java 8Ubuntu 14.04 (16.04 함께 테스트) * System.getenv("변수명");대부분의 문서에서 환경변수 지정하면 읽어올 수 있다고 하는데...https://stackoverflow.com/questions/29782467/system-getenv-returns-null-when-the-environment-variable-exists?utm_medium=organic&utm_source=google_rich_qa&utm_campaign=google_rich_qa동작 안 함.- 다음 파일 중 하나에.../home/사용자명/.profile/home/사용자명/.bash_profile/..
* 이클립스에서 비지터 사용하기 - 기본적으로 비지터 생성되지 않음 (no-visitor 옵션) - 프로젝트->우클릭>Properties > ANTLR > Enable project specific setting (프로젝트에 ANTLR 설정 적용 안 된 경우) - 비지터 켜기 위해선 > tool Generate parse tree visitors 체크하면 ANTLR 실행시 -visitor 옵션 주는것과 같음 - 참고: External... 로 실행할 때 -no-visitor 만 빼면 되는게 아니라, -visitor 를 꼭 넣어줘야 함 * 컴파일 하면 (문법 이름이 Abc 라면) AbcBaseVisitor AbcVisitor 가 생김 * 사용 방법 AbcVisitor 를 상속한 후 visit얼터너티브이름(..
* 개요- mysql 접속시 serverTimeZone=UTC 로 한 이후시간 컬럼 저장시 오차가 생김( 09시로 저장하면 00시로 저장됨.. UTC 시간으로...) - 한국 시간 UTC+0900 으로 맞추려면?? * 환경우분투 14.04MySQL 5.5 * 방법1 - my.cnf 에 타임존 설정 (실패함) 1. /etc/mysql/my.cnf 에 다음 내용 입력 후 [mysqld]default-time-zone=Asia/Seoul 2. 재시작 sudo /etc/init.d/mysql restart 3. 확인SELECT @@global.time_zone, @@session.time_zone; - 출처 : https://blog.naver.com/wizardkyn/220852348757 *https://d..
* 개요- ANTLR 기본 프로젝트 실행 하는 방법- NEW -> Antlr Project 하면 생성되는 Hello.g4 를 JUnit 이용해서 실행하는 과정 자동생성 되는 Hello.g4 내용/** * Define a grammar called Hello */grammar Hello;r : 'hello' ID ; // match keyword hello followed by an identifier ID : [a-z]+ ; // match lower-case identifiers WS : [ \t\r\n]+ -> skip ; // skip spaces, tabs, newlines * 환경Eclipse OxygenAntlr IDE 4JUnit 5 1. JUnit 이 빌드패스 추가되어있어야 함. 2. He..