Как выполнить JAR на веб-сайте CGI через Python? - PullRequest
0 голосов
/ 05 марта 2019

В настоящее время я работаю над школьным проектом, в котором мы должны запустить jar-файл на веб-сайте cgi через скрипт на python.

мой вывод jar выглядит примерно так:

String str = "<body>"+str+"</body>";
BufferedWriter writer = new BufferedWriter(new FileWriter(s+".html"));
        writer.write(str);
        writer.close();

Мой скрипт на Python примерно такой:

#!/usr/bin/env python3
import cgi, cgitb
import os
import subprocess
cgitb.enable()
HTML="""
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
     <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Validation</title>
</head>"""

HTML2="""
</html>
"""
out = subprocess.check_output(["java -jar test.jar])
print(out)

Если я запускаю его, он всегда дает мне синтаксическую ошибку. Любая помощь очень ценится.

Отслеживание стека

CalledProcessError  Python 3.7.2: C:\Users\maxgr\PycharmProjects\untitled1\venv\Scripts\python.exe
Tue Mar 5 01:26:43 2019

A problem occurred in a Python script. Here is the sequence of function calls leading up to the error, in the order they occurred.
 C:\Users\maxgr\PycharmProjects\untitled1\Aufgabe13\ToHtml.py in <module>()
     59 
     60 #out = subprocess.check_output(["java -jar /home/r/reinisch/public_html/cgi-bin/secstruc/validateGor.jar -s /home/r/reinisch/public_html/cgi-bin/secstruc/seclib/" + seclib + " -f html -s /home/r/reinisch/public_html/cgi-bin/predic/" + predic +" "] ,shell=True)
=>   61 out = subprocess.check_output(["java -jar C:\\dev\\git\\out\\artifacts\\git_jar4\\git.jar -r C:\\dev\\git\\src\\secstruc\\cb513.db" + " -f html -p C:\\dev\\git\\src\\secstruc\\cb513_gor1_cb513.prd "] ,shell=True)
     62 
     63 #out = subprocess.check_output(["echo hallo"], shell=True)
out undefined, subprocess = <module 'subprocess' from 'C:\\Users\\maxgr\\App...\Programs\\Python\\Python37\\lib\\subprocess.py'>, subprocess.check_output = <function check_output>, shell undefined
 C:\Users\maxgr\AppData\Local\Programs\Python\Python37\lib\subprocess.py in check_output(timeout=None, *popenargs=([r'java -jar C:\dev\git\out\artifacts\git_jar4\git.... -p C:\dev\git\src\secstruc\cb513_gor1_cb513.prd '],), **kwargs={'shell': True})
    393 
    394     return run(*popenargs, stdout=PIPE, timeout=timeout, check=True,
=>  395                **kwargs).stdout
    396 
    397 
kwargs = {'shell': True}, ).stdout undefined
 C:\Users\maxgr\AppData\Local\Programs\Python\Python37\lib\subprocess.py in run(input=None, capture_output=False, timeout=None, check=True, *popenargs=([r'java -jar C:\dev\git\out\artifacts\git_jar4\git.... -p C:\dev\git\src\secstruc\cb513_gor1_cb513.prd '],), **kwargs={'shell': True, 'stdout': -1})
    485         if check and retcode:
    486             raise CalledProcessError(retcode, process.args,
=>  487                                      output=stdout, stderr=stderr)
    488     return CompletedProcess(process.args, retcode, stdout, stderr)
    489 
output undefined, stdout = b'', stderr = None

CalledProcessError: Command '['java -jar C:\\dev\\git\\out\\artifacts\\git_jar4\\git.jar -r C:\\dev\\git\\src\\secstruc\\cb513.db -f html -p C:\\dev\\git\\src\\secstruc\\cb513_gor1_cb513.prd ']' returned non-zero exit status 1.
      args = (1, [r'java -jar C:\dev\git\out\artifacts\git_jar4\git.... -p C:\dev\git\src\secstruc\cb513_gor1_cb513.prd '])
      cmd = [r'java -jar C:\dev\git\out\artifacts\git_jar4\git.... -p C:\dev\git\src\secstruc\cb513_gor1_cb513.prd ']
      output = b''
      returncode = 1
      stderr = None
      stdout = b''
      with_traceback = <built-in method with_traceback of CalledProcessError object> 

Ошибка Python:

<code>C:\Users\maxgr\PycharmProjects\untitled1\venv\Scripts\python.exe C:/Users/maxgr/PycharmProjects/untitled1/Aufgabe13/ToHtml.py
Console output is saving to: C:\dev\git\testtohtml.html
<!--: spam
Die Syntax f�r den Dateinamen, Verzeichnisnamen oder die Datentr�gerbezeichnung ist falsch.
Content-Type: text/html

<body bgcolor="#f0f0f8"><font color="#f0f0f8" size="-5"> -->
<body bgcolor="#f0f0f8"><font color="#f0f0f8" size="-5"> --> -->
</font> </font> </font> </script> </object> </blockquote> 


CalledProcessError Python 3.7.2: C: \ Users \ maxgr \ PycharmProjects \ untitled1 \ venv \ Scripts \ python.exe
Вт 5 марта 01:26:43 2019

Возникла проблема в скрипте Python.Вот последовательность вызовов функций, приводящих к ошибке, в порядке их возникновения.

C: \ Users \ maxgr \ PycharmProjects \ untitled1 \ Aufgabe13 \ ToHtml.py in () 59
60 #out = subprocess.check_output (["java -jar /home/r/reinisch/public_html/cgi-bin/secstruc/validateGor.jar -s / home / r / reinisch / public_html / cgi-bin / secstruc / seclib /" + seclib + "-f html-s / home / r / reinisch / public_html / cgi-bin / прогноз / "+ прогноз +" "], shell = True)
=> 61 out = subprocess.check_output (["java -jar C: \\ dev \\ git \\ out \\ артефакты \\ git_jar4 \\ git.jar -r C: \\ dev \\ git \\ src \\ secstruc \\ cb513.db "+" -f html -p C: \\ dev \\ git \\ src \\ secstruc \\ cb513_gor1_cb513.prd "], shell = True)
62
63 #out = subprocess.check_output (["echo hallo"], shell = True)
out undefined , подпроцесс = <модуль 'подпроцесс' из 'C: \\ Users \\ maxgr \\ App ... \ Programs \\ Python \\ Python37 \\ lib\\ subprocess.py '>, подпроцесс. check_output = <функция check_output>, оболочка undefined C: \ Users \ maxgr \ AppData \ Local \ Programs \ Python \ Python37 \ lib \ subprocess.py в check_output (время ожидания = Нет, * popenargs =([r'java -jar C: \ dev \ git \ out \ artifacts \ git_jar4 \ git .... -p C: \ dev \ git \ src \ secstruc \ cb513_gor1_cb513.prd '],), ** kwargs ={'shell': True}) 393
394 обратный прогон (* popenargs, stdout = PIPE, timeout = timeout, check = True,
=> 395 ** kwargs) .stdout
396
397
kwargs = {'shell': True},) .stdout undefined C: \ Users \ maxgr \ AppData \ Local \ Programs \ Python \ Python37 \ lib \ subprocess.py в запустить (вход = нет, capture_output = False, timeout = Нет, check = True, * popenargs = ([r'java -jar C: \ dev \ git \ out \ artifacts \ git_jar4 \ git .... -p C: \ dev \ git \ src \ secstruc \cb513_gor1_cb513.prd '],), ** kwargs = {' shell ': True,' stdout ': -1}) 485 ifпроверка и повторный код:
486 повышение CalledProcessError (retcode, process.args,
=> 487 output = stdout, stderr = stderr)
488 return CompletedProcess *(process.args, retcode, stdout, stderr)
489
выход не определено , стандартный вывод = b '', стандартный поток = нет

CalledProcessError : Команда '[' java -jar C: \\ dev \\ git \\ out \\ артефакты \\ git_jar4 \\ git.jar -r C: \\ dev \\ git \\ src \\ secstruc \\ cb513.db -f html -p C: \\ dev \\ git \\ src \\ secstruc \\ cb513_gor1_cb513.prd ']' возвращеноненулевой статус выхода 1.
args = (1, [r'java -jar C: \ dev \ git \ out \ artifacts \ git_jar4 \ git .... -p C: \ dev \ git \ src \ secstruc \ cb513_gor1_cb513.prd '])
cmd = [r'java -jar C: \ dev \ git \out \ artifacts \ git_jar4 \ git .... -p C: \ dev \ git \ src \ secstruc \ cb513_gor1_cb513.prd']
output = b' '
код возврата = 1
stderr = Нет
stdout = b ''
with_traceback = <встроенный методwith_traceback объекта CalledProcessError>Файл "C: \ Users \ maxgr \ AppData \ Local \ Programs \ Python \ Python37 \ lib \ subprocess.py", строка 487, в ходе выполнения output = stdout, stderr = stderr) subprocess.CalledProcessError: Command '[' java -jarC: \\ dev \\ git \\ out \\ артефакты \\ git_jar4 \\ git.jar -r C: \\ dev \\ git \\ src \\ secstruc \\ cb513.db -f html -p C:\\ dev \\ git \\ src \\ secstruc \\ cb513_gor1_cb513.prd ']' возвратил ненулевое состояние выхода 1.

->

Процесс завершен с выходомкод 1

1 Ответ

0 голосов
/ 05 марта 2019

Не должно out = subprocess.check_output(["java -jar test.jar]) быть:

out = subprocess.check_output(["java -jar test.jar"])?

(отсутствует закрытие ")

Если проблема не в этом, нам нужночтобы увидеть полную трассировку стека.

...