0

私は次の設定をしています:

  • mybase.odbという名前の HSQLDB Split-DB に接続されたLibreOffice ベースmydb
  • レポートを開くボタンのあるフォーム
  • 基本的に実行するこのボタンの背後にあるマクロ:
   shell(convertToUrl(Tools.Strings.DirectoryNameOutOfPath( _
                      ThisComponent.Parent.getURL(), "/") & "myReport.cmd"), HIDE)
  • myReport.cmd内容:
    :: From: http://hsqldb.org/doc/2.0/guide/listeners-chapt.html#lsc_listener_types
    start /min java -cp %~dp0driver/hsqldb.jar org.hsqldb.server.Server
        --database.0 file:mydb --dbname.0 mydb

    timeout /t 3

    :: From: http://jasperstarter.cenote.de/index.html
    jasperstarter -v pr %~dp0myReport.jasper -r -o . -f pdf
        -H [localhost|127.0.0.1] --db-port 9001 -n mydb -u myuser

[ここでは読みやすくするために改行を挿入しています。]

HSQLDB サーバーが正常に起動します。

...
[Server@1742700]: Startup sequence completed in 382 ms.
[Server@1742700]: 2016-05-09 23:05:49.129 HSQLDB server 2.3.2 is online on port 9001
...

後続JasperStarterはエラーを表示しませんPDFが、作成されません。

HSQLDBサーバーの出力に続いて、Server@1742700私も試しました(希望はほとんどありませんでした):

jasperstarter ... -H 1742700 ... -n Server

無駄に。

以下は、myReport.cmdスタンドアロンのチャームのように機能します。

jasperstarter pr %~dp0myReport.jasper -r -o . -f pdf -t generic
    --jdbc-dir %~dp0driver --db-driver org.hsqldb.jdbcDriver
    --db-url jdbc:hsqldb:file:%~dp0database/mydb;sql.syntax_mys=true;shutdown=true
    -u myuser

[ここでは読みやすくするために改行を挿入しています。]

しかし、もちろん、mybase.odb開いている場合はそうではありません:

Unable to connect to database: Database lock acquisition failure: lockFile:
org.hsqldb.persist.LockFile@68306856[file =<path>\database\mydb.lck, exists=true,
locked=false, valid=false, ] method: checkHeartbeat read: 2016-05-09 21:25:13
heartbeat - read: -6188 ms.

ところで、locked=falseロックファイルが存在するのはなぜですか?

4

2 に答える 2

2

fredt の回答によると、次myapp.cmdを含むものを作成しました。

start "My DB Server" /min java -cp %~dp0driver/hsqldb.jar org.hsqldb.server.Server
   --database.0 file:%~dp0database/mydb --dbname.0 mydb
timeout /t 2
start /b /max %~dp0mybase.odb

myReport.cmd現在、次のものが含まれています。

jasperstarter -v pr %~dp0myReport.jasper -r -o %~dp0 -f pdf
   -H localhost --db-port 9001 -n mydb -u myuser

そして、私は次のことに気付きました:

jasperstarter ... -o .

期待どおりに動作しません。' .' を使用するとC:\Program Files (x86)\LibreOffice 5\program、出力ディレクトリとして取得されます (Base 内から呼び出された場合に理解できます)。したがって、絶対に変更しました%~dp0

于 2016-05-10T20:03:32.833 に答える