我有一個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文件的變體,但似乎沒有任何幫助。
你的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://stackoverflow.com/questions/14124099/cannot-call-trigger-in-h2-db) – 2014-10-27 04:12:39