2017-09-06 2 views
0

J'ai un HSQLDB incorporé dans un fat-jar dans le répertoire des ressources du pot. Lorsque mon script tente d'accéder à la base de données, une erreur se produit en l'absence d'un fichier .lck. Cependant, j'avais l'impression que les fichiers jar de DB seraient toujours accessibles en mode lecture seule.HSQLDB Embedded dans jar jarre

Caused by: org.hsqldb.HsqlException: Database lock acquisition failure: lockFile: [email protected][file =/mnt/c/ctakes/SparkCtakes/jar:file:/mnt/c/ctakes/SparkCtakes/lib/ctakes-assembly-4.0.1.jar!/resources/org/apache/ctakes/dictionary/lookup/fast/sno_rx_16ab/sno_rx_16ab.lck, exists=false, locked=false, valid=false, ] method: openRAF reason: java.io.FileNotFoundException: /mnt/c/ctakes/SparkCtakes/jar:file:/mnt/c/ctakes/SparkCtakes/lib/ctakes-assembly-4.0.1.jar!/resources/org/apache/ctakes/dictionary/lookup/fast/sno_rx_16ab/sno_rx_16ab.lck (No such file or directory) 
     at org.hsqldb.error.Error.error(Unknown Source) 
     at org.hsqldb.error.Error.error(Unknown Source) 
     at org.hsqldb.persist.LockFile.newLockFileLock(Unknown Source) 
     at org.hsqldb.persist.Logger.acquireLock(Unknown Source) 
     at org.hsqldb.persist.Logger.open(Unknown Source) 
     at org.hsqldb.Database.reopen(Unknown Source) 
     at org.hsqldb.Database.open(Unknown Source) 
     at org.hsqldb.DatabaseManager.getDatabase(Unknown Source) 
     at org.hsqldb.DatabaseManager.newSession(Unknown Source) 
     ... 112 more 

La façon dont je suis en train de créer cette graisse-pot contenant les ressources de base de données est en plaçant le dossier des ressources dans src/main/scala/resources puis en utilisant sbt-assembly pour emballer tout.

+0

Ajouter '= readonly true' à l'URL de connexion. – fredt

+0

Modification de la chaîne en 'jdbc: hsqldb: fichier: ressources/org/apache/ctakes/dictionnaire/recherche/rapide/sno_rx_16ab/sno_rx_16ab; hsqldb.lock_file = false; readonly = true', mais je rencontre toujours la même erreur . – mongolol

Répondre

0

Lorsqu'une base de données en lecture seule se trouve dans un fichier Jar, l'URL d'accès à la base de données doit être une URL de type res:.

le répertoire Supposant niveau supérieur dans le pot est org, l'URL ressemblerait à ceci:

jdbc:hsqldb:res:/org/apache/ctakes/dictionary/look‌​up/fast/sno_rx_16ab/‌​sno_rx_16ab 
+0

En partant de votre réponse plus tôt, j'ai réussi à l'obtenir en allant dans le fichier '.properties' de la base de données et en y entrant' readonly = true'. – mongolol