gpt4 book ai didi

java - 将 Java 函数与 Apache Derby 结合使用

转载 作者:行者123 更新时间:2023-11-30 11:01:03 24 4
gpt4 key购买 nike

我在 Apache Derby 中使用函数时遇到过问题,因为我无法让 Derby 找到我自定义的函数。典型的错误消息如下所示:

The class 'de.uniba.kinf.projm.hylleblomst.database.sql.utils.GroupConcat' does not exist or is inaccessible. 
This can happen if the class is not public.

文档指出该方法必须是公共(public)的和静态的。这就是我想要使用的:

package de.uniba.kinf.projm.hylleblomst.database.sql.utils;
public final class GroupConcat {
public static String groupConcat(String separator, String... arguments) {
StringBuilder result = new StringBuilder("");
for (String arg : arguments) {
result.append(arg + separator + " ");
}
result.delete(result.length() - 2, result.length());
return result.toString();
}
}

基本上,我只想将 GroupConcat 功能添加到 Derby 标准中未提供的数据库中。我用来将函数添加到数据库的语句是这样的:

CREATE FUNCTION SQL_UTIL.GROUP_CONCAT 
( SEPARATOR CHAR, ARGS VARCHAR(255) ... )
RETURNS VARCHAR(2000)
PARAMETER STYLE DERBY
NO SQL LANGUAGE JAVA
EXTERNAL NAME 'de.uniba.kinf.projm.hylleblomst.database.sql.utils.GroupConcat.groupConcat'

我还将 GroupConcat 类打包到一个 jar 中,并将其添加到 Derby 应该能够找到它的类路径中,并将其直接添加到数据库中。这是我所做的:.jar 位于项目的 lib 文件夹中,它也是构建路径的一部分(我使用的是 Eclipse)。它在项目的 CLASSPATH 文件中的条目如下所示:

<classpathentry kind="lib" path="lib/groupConcat.jar"/>

为了更好的衡量和一些绝望,我还将它添加到我的系统的类路径中:

. ; ..;%DERBY_HOME%\lib\derby.jar;%DERBY_HOME%\lib\derbytools.jar;C:\Users\workspace\kinf-workspace\General\lib

我的错误可能非常微不足道,但我对 Derby 和一般的数据库还很陌生,所以我很感激任何帮助。

提前致谢!

最佳答案

事实证明,这个问题更具体到 Eclipse,而且本质上是微不足道的。虽然包含 Java 类的 jar 已经在类路径中,但 Eclipse 没有将 jar 添加到运行配置中。显然,类路径从那里传递到 Derby,当然它找不到类。所以所要做的就是将包含相关方法的类打包到一个 jar 中,将其添加到项目的库中,将其添加到运行配置的类路径中并运行它。

经验教训:永远不要相信您的 IDE 会完成您的(所有)工作。

关于java - 将 Java 函数与 Apache Derby 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31355382/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com