gpt4 book ai didi

基于Java的H2数据库无法在CLASSPATH中找到项目

转载 作者:行者123 更新时间:2023-12-01 12:22:24 25 4
gpt4 key购买 nike

我有一个 scala 文件已使用以下命令编译:

scalac -cp ".:*"AcmeTrigger.scala

在包含 .scala 文件的目录中,有一些 .jar 文件,其中包含我正在使用的电子邮件和短信服务的 API。这里没有问题。

当有人修改数据库中的表时,scala 文件本质上会发送文本消息和电子邮件。我使用以下命令启动数据库:

java -cp ".:*"-jar h2-1.4.182.jar

本质上告诉它使用目录中的.class.jar文件并将它们添加到类路径中。我已经做了很多变体。没有 .class,带有“.:*”和完全键入的名称。无论我做什么,H2 都无法识别该类。

所以这个数据库中有一个操作将数据库连接到一个类:

插入“事件”后创建触发警报
对于每一行调用“AcmeTrigger”

当我运行此程序时,我收到一条错误,指出找不到该类:

创建或初始化触发器“ALERT”对象、类“AcmeTrigger”时出错,原因:“org.h2.message.DbException:未找到类“AcmeTrigger”[90086-182]”

我认为错误不在查询语法中,而是与我使用类路径的方式有关,并且希望具有更多 Java/Scala 经验的人可以在这里帮助我。我尝试了许多启动 .jar 文件的变体,但似乎没有任何帮助。

最佳答案

H2 jar 的默认 main 方法有一些问题会导致奇怪的类加载器行为(需要更多研究来确定是什么)。我和OP有完全相同的经历。

将编译后的类以及 H2 jar 复制到您选择的目录(例如 libs)中后,像这样运行 H2 服务器:

java -cp "/libs:/libs/h2-1.4.197.jar"org.h2.tools.Server

这应该会导致触发器引用的类得到正确解析。

关于基于Java的H2数据库无法在CLASSPATH中找到项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26580787/

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