Progress ABL - командный файл запускается и записывается в журнал, но не выполняет .jar

Я написал программу на Java, которую нужно выполнить в пакетном файле. Когда я запускаю программу, которая выполняет командный файл, командный файл создает и записывает в соответствующие журналы, но не запускает исполняемую банку.

Мой командный файл:

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 на сервере каким-то образом отличается от установки на моем локальном компьютере. Теперь мне нужен Мастер прогресса.


person EmacsVI    schedule 31.05.2017    source источник
comment
Вы указали полный путь к исполняемому файлу Java? Каков результат echo% errorlevel% после попытки запустить Java?   -  person Marged    schedule 31.05.2017
comment
Первое, что я делаю, - это меняю каталоги на c: \ apps \ HL7 \ src, где находятся файлы .bat и .jar. Нет вывода из эха% errorlevel%, если только не возникает ошибка.   -  person EmacsVI    schedule 31.05.2017
comment
Поставляются разные имена, содержащие 793723096202 в пакете, но 793722688601 в cmd. Следовательно, результаты также могут отличаться.   -  person JosefZ    schedule 31.05.2017
comment
Неа. Это не то. Системное время просто отражает, когда была запущена партия. Проблема не в параметрах.   -  person EmacsVI    schedule 31.05.2017
comment
Во-первых, удалите молчание, чтобы увидеть, действительно ли появляется какая-либо ошибка при завершении пакета. Во-вторых, я бы не поверил, что Progress находится в нужной папке только потому, что вы сменили каталог. Добавьте путь к опоре и удалите его в конце, также как тест. Наконец, вы можете попытаться добавить проверку в OS-ERROR, чтобы обнаруживать ошибки, которые могут не отображаться на экране, но все же генерируются ОС. Попробуйте это, и, надеюсь, у нас будет больше информации, чтобы попытаться найти окончательное решение.   -  person bupereira    schedule 01.06.2017


Ответы (1)


Подозреваю, что проблема в следующем:

Как объясняется здесь, чтобы успешно запустить программу Java, вы должны убедиться, что что переменная окружения PATH установлена ​​правильно.

Когда вы тестируете на своем dev-компьютере или когда вы запускаете командный файл на prod-машине вручную, из вашего собственного профиля пользователя, PATH правильный, и все работает.

Когда вы запускаете программу ABL, она запускается (возможно) с разными переменными среды, и поэтому либо не может найти "java", либо отсутствует какой-либо другой важный элемент конфигурации (java-библиотеки / jar-файлы, может быть?).

Попытайтесь увидеть, каково значение PATH при вызове из внутри контекста выполнения ABL. Например, попробуйте:

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

и сравните его с тем, что вы получите, выполнив «set PATH» из командной строки.

person p.marino    schedule 01.06.2017