【问题标题】:How to specify java class version for H2 Database User-Defined Functions and Stored Procedures?如何为 H2 数据库用户定义函数和存储过程指定 java 类版本?
【发布时间】:2012-07-10 15:50:31
【问题描述】:

这里:create_alias & user_defined_functions 写着:

如果文件 tools.jar 位于 Sun javac is 编译器 类路径。如果没有,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”。
  • 我确保系统范围内只安装了一个 java; javac -version == javac 1.7.0_05;服务器是这样启动的:RunH2.java;测试是这样调用的:Koan16.java
  • 您能否再次检查您的系统中是否安装了 JRE 或 JDK 1.6?另外,您能否发布其余的堆栈跟踪(“根本原因”)?

标签: java stored-procedures javac h2 java-stored-procedures


【解决方案1】:

错误消息"Unsupported major.minor version 51.0" 表明您的系统中有在某些情况下使用的JDK 或JRE 1.6。另见问题unsupported-major-minor-version-51-0

【讨论】:

  • 你是对的;经过大量搜索:-) 我确实找到了一个隐藏在我的 Eclipse 设置中的 java 6!
  • 无论如何,如果 H2 使用javax.tools.JavaCompiler 那么这个问题就不会发生...我会尝试解决这个问题。
猜你喜欢
  • 1970-01-01
  • 2016-12-30
  • 1970-01-01
  • 2011-03-07
  • 2012-07-27
  • 2011-05-05
  • 1970-01-01
  • 2017-12-26
  • 1970-01-01
相关资源
最近更新 更多