은 : 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
감사합니다.
안드레이.
문제는 버전 H2가 빌드 된 것이 아닙니다. 대부분의 경우 문제는 런타임에 코드를 컴파일하는 데 사용되는 Java 컴파일러의 버전입니다. H2는 (프로세스로서) "javac"을 시작합니다. 이것은 환경에서 여전히 1.5입니다. "javac -version"을 시도하십시오. –
나는 시스템에 설치된 단일 자바 만 있는지 확인했다. 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) –
시스템에 JRE 또는 JDK 1.6이 설치되어 있지 않은지 다시 확인할 수 있습니까? 또한 나머지 스택 추적 ('근본 원인')을 게시 할 수 있습니까? –