首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用JasperReport运行JasperStarter不会创建输出文件

使用JasperReport运行JasperStarter不会创建输出文件
EN

Stack Overflow用户
提问于 2016-05-09 21:49:24
回答 2查看 847关注 0票数 0

我有以下设置:

  • 连接到名为LibreOffice的HSQLDB拆分DB的mybase.odbmybase.odb
  • 打开报表的按钮的表单。
  • 这个按钮后面的宏,基本上执行:
代码语言:javascript
复制
   shell(convertToUrl(Tools.Strings.DirectoryNameOutOfPath( _
                      ThisComponent.Parent.getURL(), "/") & "myReport.cmd"), HIDE)
  • myReport.cmd包含:
代码语言:javascript
复制
    :: 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服务器成功地启动:

..。服务器@1742700:启动顺序在382毫秒内完成。服务器@1742700: 2016-05-09 23:05:49.129 HSQLDB服务器2.3.2在端口9001 .

后续的JasperStarter没有显示任何错误,但没有创建PDF

在HSQLDB服务器输出Server@1742700之后,我也尝试过(希望渺茫):

代码语言:javascript
复制
jasperstarter ... -H 1742700 ... -n Server

都没有用。

myReport.cmd中,下面的内容就像一个独立的魅力:

代码语言:javascript
复制
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是开放的,则不会:

无法连接数据库:数据库锁获取失败: lockFile: org.hsqldb.persist.LockFile@68306856file =\database\mydb.lck、exists=true、locked=false、valid=false,方法: checkHeartbeat读取: 2016-05-09 21:25:13心跳-读:-6188 ms。

顺便问一下,当锁文件存在时,为什么是locked=false

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-05-09 22:51:33

一次只有一个Java进程可以连接到一个文件:数据库。该消息指示第二个进程无法获取锁,因为锁文件是由其他进程创建的,并且确实存在。

您应该更改设置,以便在启动LibreOffice之前启动HSQLDB。然后,LibreOffice连接到服务器数据库,您的宏不再启动服务器,而只是使用server启动报表生成器。

票数 1
EN

Stack Overflow用户

发布于 2016-05-10 20:03:32

根据fredt的回答,我创建了一个myapp.cmd,它包含:

代码语言:javascript
复制
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现在只包含:

代码语言:javascript
复制
jasperstarter -v pr %~dp0myReport.jasper -r -o %~dp0 -f pdf
   -H localhost --db-port 9001 -n mydb -u myuser

我意识到:

代码语言:javascript
复制
jasperstarter ... -o .

不像预期的那样起作用。对于'.‘,它将C:\Program Files (x86)\LibreOffice 5\program作为输出目录(如果从Base中调用,则可以理解)。因此,我将其更改为绝对%~dp0

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37126030

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档