基于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文件的变体,但似乎没有任何帮助。
AFAIK您不能将单个.class
文件添加到类路径中。尝试java -cp ".:*.jar"
(即使用这个目录作为在classpath中的条目,而不是个别.class
文件)
还要注意的是scalac
隐含包括例如classpath上的scala库。确保你有合适的scala-library.jar
。
尝试了不同的变体以及添加scala-library.jar。 – AmericanKryptonite 2014-10-27 16:07:03
你的jar是运行H2本身,还是通过JDBC或其他方式连接到另一个进程? – 2014-10-27 03:55:36
@ChrisMartin .jar包含一个类“AcmeTrigger”,它扩展了org.h2.api.Trigger。根据H2文档,你可以指出每次运行我上面发布的SQL语句时都应该调用这个文件。 SQL语句返回在类路径中找不到该类。 – AmericanKryptonite 2014-10-27 04:00:59
可能重复[无法在H2 DB中调用触发器](http://*.com/questions/14124099/cannot-call-trigger-in-h2-db) – 2014-10-27 04:12:39