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

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

问题描述:

我有一个Scala的文件已编制使用下面的命令:基于Java的H2数据库无法找到项目在CLASSPATH

scalac -cp ".:*" AcmeTrigger.scala

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

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

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

实质上是告诉它使用的.class.jar目录中的文件,并将它们添加到类路径。我做了很多变化。没有.class,带“。:*”的全名。无论我做什么,H2都不承认这个班级。

所以这是在该数据库,该数据库连接到一类的操作:

CREATE TRIGGER ALERT AFTER INSERT ON "event" FOR EACH ROW CALL "AcmeTrigger"

当我运行此我得到,指出它不能找到类错误:

Error creating or initializing trigger "ALERT" object, class "AcmeTrigger", cause: "org.h2.message.DbException: Class ""AcmeTrigger"" not found [90086-182]"

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

+0

你的jar是运行H2本身,还是通过JDBC或其他方式连接到另一个进程? – 2014-10-27 03:55:36

+0

@ChrisMartin .jar包含一个类“AcmeTrigger”,它扩展了org.h2.api.Trigger。根据H2文档,你可以指出每次运行我上面发布的SQL语句时都应该调用这个文件。 SQL语句返回在类路径中找不到该类。 – AmericanKryptonite 2014-10-27 04:00:59

+0

可能重复[无法在H2 DB中调用触发器](http://*.com/questions/14124099/cannot-call-trigger-in-h2-db) – 2014-10-27 04:12:39

AFAIK您不能将单个.class文件添加到类路径中。尝试java -cp ".:*.jar"(即使用这个目录作为在classpath中的条目,而不是个别.class文件)

还要注意的是scalac隐含包括例如classpath上的scala库。确保你有合适的scala-library.jar

+0

尝试了不同的变体以及添加scala-library.jar。 – AmericanKryptonite 2014-10-27 16:07:03