2012-07-10 6 views
2

은 : create_alias & user_defined_functions 그것은 기록 :H2 데이터베이스 사용자 정의 함수 및 저장 프로 시저에 Java 클래스 버전을 지정하는 방법은 무엇입니까? 여기

태양의 javac의 파일의 tools.jar를이 클래스 경로에있는 경우 컴파일러가 사용됩니다. 그렇지 않은 경우, javac는 별개의 프로세스로서 실행됩니다.

H2 데이터베이스 사용자 정의 함수 및 저장 프로 시저에 대한 Java 클래스 버전을 어떻게 지정할 수 있습니까? 즉 외부 javac에 대한 javac 호출 옵션은? 외부 javac (jdk/tool.jar가 발견 된 경우에도)를 강제로 수행 할 수 있습니까?

예를 들어, H2는 Java 1.5에 대해 작성되었습니다. java 1.7에서 실행 중입니다.

org.apache.ibatis.exceptions.PersistenceException: 
### Error updating database. Cause: org.h2.jdbc.JdbcSQLException: 
General error: 
"java.lang.UnsupportedClassVersionError: org/h2/dynamic/NEXT_PRIME : 
Unsupported major.minor version 51.0"; SQL statement: 
CREATE ALIAS NEXT_PRIME AS $$ 
     String nextPrime(String value) { 
      return new BigInteger(value).nextProbablePrime().toString(); 
     } 
    $$; [50000-167] 
    at org.h2.message.DbException.getJdbcSQLException(DbException.java:329) 
    at org.h2.message.DbException.get(DbException.java:158) 
    at org.h2.message.DbException.convert(DbException.java:277) 
    at org.h2.command.Command.executeUpdate(Command.java:234) 
    at org.h2.server.TcpServerThread.process(TcpServerThread.java:328) 
    at org.h2.server.TcpServerThread.run(TcpServerThread.java:149) 
    at java.lang.Thread.run(Thread.java:662) 
Caused by: java.lang.UnsupportedClassVersionError: org/h2/dynamic/NEXT_PRIME : 
Unsupported major.minor version 51.0 

감사합니다.

안드레이.

+0

문제는 버전 H2가 빌드 된 것이 아닙니다. 대부분의 경우 문제는 런타임에 코드를 컴파일하는 데 사용되는 Java 컴파일러의 버전입니다. H2는 (프로세스로서) "javac"을 시작합니다. 이것은 환경에서 여전히 1.5입니다. "javac -version"을 시도하십시오. –

+0

나는 시스템에 설치된 단일 자바 만 있는지 확인했다. javac -version == javac 1.7.0_05; 서버는 다음과 같이 시작됩니다 : [RunH2.java] (https://github.com/carrot-garden/sql_mybatis-koans/blob/master/src/test/java/server/RunH2.java); 테스트는 다음과 같이 호출됩니다. [Koan16.java] (https://github.com/carrot-garden/sql_mybatis-koans/blob/master/src/test/java/net/thornydev/mybatis/test/koan16/h2 /Koan16.java) –

+0

시스템에 JRE 또는 JDK 1.6이 설치되어 있지 않은지 다시 확인할 수 있습니까? 또한 나머지 스택 추적 ('근본 원인')을 게시 할 수 있습니까? –

답변

0

오류 메시지 "Unsupported major.minor version 51.0"은 사용자 시스템에 JDK 또는 JRE 1.6이있는 경우가 있음을 나타냅니다. 질문 unsupported-major-minor-version-51-0도 참조하십시오.

+0

당신이 옳습니다; 많은 검색 후 :-) 나는 내 일식 설정에 숨어 있던 자바 6을 찾았습니다! –

+0

어쨌든 H2가'javax.tools.JavaCompiler'를 사용한다면이 문제는 발생하지 않을 것입니다 ... 나는 그것을 고치려고 노력할 것입니다. –

+0

위대한; 고맙습니다. –