【问题标题】:Progress ABL - Batch file runs and writes to log, but won't execute .jarProgress ABL - 批处理文件运行并写入日志,但不会执行 .jar
【发布时间】:2017-11-01 18:05:14
【问题描述】:

我编写了一个需要在批处理文件中执行的 java 程序。当我运行执行批处理文件的程序时,批处理文件将创建并写入相应的日志,但不会运行可执行 jar。

我的批处理文件:

SETLOCAL ENABLEEXTENSIONS
SET me=%~n0
SET parent=%~dp0
SET log=C:\apps\HL7\src\Error_log\Pipeline_batch_log.txt

ECHO /* ************************* Error Log Initiated ************************* */ >> %log%
ECHO %DATE:~10,4%:%DATE:~4,2%:%DATE:~7,2%-%TIME:~0,2%:%TIME:~3,2%:%TIME:~6,2% >> %log%
ECHO %parent% >> %log%
ECHO %me% >> %log%

CD c:\apps\HL7\src

IF %ERRORLEVEL% NEQ 0 (
ECHO error - CD failed. >> %log%
)

ECHO java -jar HL7toSS.jar "%1" "%2" "%3" "%4" "%3" "%4" >> %log%

java -jar HL7toSS.jar "%1" "%2" "%3" "%4" "%3" "%4">> %log%

DEL c:\apps\HL7\src\%2

IF %ERRORLEVEL% NEQ 0 (
ECHO error - HL7 xml file did not delete. >> %log%
)

ECHO /* ****************************** END OF LOG ****************************** */ >> %log%

EXIT

如您所见,我记录了可执行 jar 的输出,但它是无声的(我假设是因为它从未运行过)。我还记录了应该运行的命令;复制此命令并在命令提示符中运行它就可以了。

这是我在日志文件中看到的输出

/* ************************* Error Log Initiated ************************* */ 
2017:05:31-14:38:16 
C:\APPS\HL7\src\ 
Pipeline_batch 
Infile: Inbound_EDI_Files\test_1.txt HL7file: HL7_XML_Files\793723096202_HL7_test_1.xml MPAXMLfile: C:\apps\HL7\src\Processed_SS_Files\successful\793723096202_SS_test_1.xml MPAXMLERRfile: Processed_SS_Files\failed\793723096202_ERR_test_1.xml BIOMEDXMLfile: C:\apps\HL7\src\Processed_SS_Files\successful\793723096202_SS_test_1.xml BIOMEDXMLERRfile: Processed_SS_Files\failed\793723096202_ERR_test_1.xml 
java -jar HL7toSS.jar "Inbound_EDI_Files\test_1.txt" "HL7_XML_Files\793723096202_HL7_test_1.xml" "C:\apps\HL7\src\Processed_SS_Files\successful\793723096202_SS_test_1.xml" "Processed_SS_Files\failed\793723096202_ERR_test_1.xml" "C:\apps\HL7\src\Processed_SS_Files\successful\793723096202_SS_test_1.xml" "Processed_SS_Files\failed\793723096202_ERR_test_1.xml"  
/* ****************************** END OF LOG ****************************** */ 

在命令提示符中复制和粘贴相同的命令会产生以下预期结果

c:\APPS\HL7\src>java -jar HL7toSS.jar "Inbound_EDI_Files\test_1.txt" "HL7_XML_Fi
les\793722688601_HL7_test_1.xml" "C:\apps\HL7\src\Processed_SS_Files\successful\
793722688601_SS_test_1.xml" "Processed_SS_Files\failed\793722688601_ERR_test_1.x
ml" "C:\apps\HL7\src\Processed_SS_Files\successful\793722688601_SS_test_1.xml" "
Processed_SS_Files\failed\793722688601_ERR_test_1.xml"
Processing: main
Processing: Convert to XML
Finished: Convert to XML
Processing: Choose
Finished: Choose
Skipping: MPA XSLT operator: Input is not available.
Skipping: MPA Validate operator: Input is not available.
Processing: BIOMED XSLT operator
Finished: BIOMED XSLT operator
Processing: BIOMED Validate operator
Finished: BIOMED Validate operator
Finished: main

c:\APPS\HL7\src>

在尝试运行 jar 时,您是否看到任何会导致批处理文件静默失败的情况?

编辑:

从命令提示符运行批处理文件本身也可以。问题似乎源于调用程序,这是一个 Progress ABL 程序。 ABL 程序正在执行批处理文件,如下所示:

ASSIGN runthis = "C:\apps\HL7\src\Pipeline_batch.bat " + INpath + " " + HL7path + " " + SSpath + " " + XML-ERRpath.

OS-COMMAND SILENT VALUE(runthis).

我们知道传入批处理文件的参数是正确的,因为有日志。

编辑 2:

在我的本地机器上一切正常。仅在服务器上发生此问题。我的直觉是,这与服务器的 Progress 安装与我本地计算机上的安装有所不同。我现在需要一个进度向导。

【问题讨论】:

  • 您是否指定了 Java 可执行文件的完整路径?尝试运行 Java 后 echo %errorlevel% 的输出是什么?
  • 我做的第一件事是将目录更改为 c:\apps\HL7\src,这是 .bat 和 .jar 所在的位置。除非发生错误,否则 %errorlevel% 回显没有输出。
  • 批量提供包含793723096202但在cmd中包含793722688601的不同名称。因此,结果也可能不同。
  • 不。不是这个。系统时间仅反映批处理运行的时间。问题不在于参数。
  • 首先,删除静默以查看批处理结束时是否实际显示任何错误。其次,我不会仅仅因为您更改了目录就相信 Progress 位于正确的文件夹中。将路径添加到 propath 并在最后将其删除,就像测试一样。最后,您可以尝试向 OS-ERROR 添加检查,以检测可能不会显示在屏幕上但仍由操作系统抛出的错误。试试这个,希望我们能获得更多信息来尝试制定最终的解决方案

标签: windows batch-file executable-jar progress-4gl


【解决方案1】:

我怀疑是以下问题:

正如here 所述,为了成功运行 Java 程序,您必须确保正确设置 PATH 环境变量。

当您在开发机器上进行测试时,或者当您在生产机器上手动启动批处理文件时,从您自己的用户配置文件中,PATH 是正确的,并且一切正常。

当您运行 ABL 程序时,它(可能)使用不同的环境变量运行,因此它要么找不到“java”,要么缺少一些其他重要的配置元素(可能是 java 库/jars?)。

尝试查看从内部 ABL 执行上下文调用时的PATH 值。举个例子:

OS-COMMAND SILENT VALUE("set PATH").

并将其与从命令行执行“设置路径”得到的结果进行比较。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多