Как указать версию класса Java для пользовательских функций и хранимых процедур базы данных H2?

здесь: create_alias и user_defined_functions написано:

компилятор Sun javac is используется, если файл tools.jar находится в пути к классам. В противном случае javac запускается как отдельный процесс.

Как можно указать версию класса java для пользовательских функций и хранимых процедур базы данных H2, т.е. параметры вызова 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

Спасибо;

Андрей.


person Andrei Pozolotin    schedule 10.07.2012    source источник
comment
Проблема не в том, с какой версией H2 собрана. Скорее всего, проблема заключается в версии компилятора Java, используемого для компиляции кода (во время выполнения). H2 запускает javac (как процесс), скорее всего, это все еще 1.5 в вашей среде. Попробуйте javac-версию.   -  person Thomas Mueller    schedule 12.07.2012
comment
Я убедился, что в системе установлена ​​только одна java; javac-версия == javac 1.7.0_05; сервер запускается следующим образом: ЗапуститьH2.java; тест вызывается следующим образом: Koan16.java   -  person Andrei Pozolotin    schedule 12.07.2012
comment
Не могли бы вы еще раз проверить, что в вашей системе не установлены JRE или JDK 1.6? Кроме того, не могли бы вы опубликовать остальную часть трассировки стека («основная причина»)?   -  person Thomas Mueller    schedule 12.07.2012


Ответы (1)


Сообщение об ошибке "Unsupported major.minor version 51.0" указывает на то, что в вашей системе есть JDK или JRE 1.6, которые используются в некоторых случаях. См. также вопрос unsupported-major-minor-version-51-0.

person Thomas Mueller    schedule 12.07.2012
comment
ты прав; после долгих поисков :-) я нашел одну java 6, которая скрывалась в моих настройках eclipse! - person Andrei Pozolotin; 13.07.2012
comment
В любом случае, если бы H2 использовал javax.tools.JavaCompiler, то этой проблемы бы не возникло... Я постараюсь это исправить. - person Thomas Mueller; 13.07.2012