ОК, я получил ответ. Я использовал компилятор Eclipse (потому что у меня в школе нет JDK) для компиляции и использовал processbuilder для запуска созданного файла .class, перенаправляя вывод с помощью redirectOutput в файл, который я прочитал, чтобы получить вывод. Спасибо - вот код.
/*PRETTYPRINT*/
/*
* Code to HTML
* Uses highlightjs in order to create a html form for your code, you can also give inputs and outputs
* */
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.PrintWriter;
import java.nio.file.Files;
import java.nio.file.Paths;
public class PrettyPrint {
public static void main(String[] args) throws FileNotFoundException{
String javaFile = readFile(args[0]);
String commandLine = readFile(args[1]);
String output = readFile(args[2]);
String html = "<!DOCTYPE html>\n"
+"<html>\n"
+"<head>"
+"<link rel=\"stylesheet\" href=\"highlightjs/styles/a11y-dark.css\" media= \"all\">\r\n"
+"<script src=\"highlightjs/highlight.pack.js\"></script>\r\n"
+"<script>hljs.initHighlightingOnLoad();</script>"
+"<script src=\"https://cdnjs.cloudflare.com/ajax/libs/jspdf/1.5.3/jspdf.debug.js\" integrity=\"sha384-NaWTHo/8YCBYJ59830LTz/P4aQZK1sS0SneOgAvhsIl3zBu8r9RevNg5lHCHAuQ/\" crossorigin=\"anonymous\"></script>\r\n"
+"<script src=\"https://cdn.jsdelivr.net/npm/html2canvas@1.0.0-rc.5/dist/html2canvas.min.js\"></script>"
+"<meta charset=\"utf-8\">"
+"<style>code{overflow-x: visible;}body{background-color:#888888;color:#444444;}h1{text-align:center;color:#444444;}</style>"
+"</head>"
+"<body style=\"font-family: 'Consolas';\">\n"
+"<h1 style=\"text-align: center\">Java Code</h1>"
+"<pre><code class=\"java\" style=\"overflow-x:visible\">"
+toHTML(javaFile)
+"
"+"
\ n "+"
Входы
"+"
<code class = \"nohighlight hljs\" style=\"overflow-x:visible\">"
+toHTML(commandLine)
+"</code>
"+"
\ n "+"
Вывод
"+"
<code class = \"nohighlight hljs\" style=\"overflow-x:visible\">"
+toHTML(output)
+"</code>
"+" \ n "+" "+" console.log (document.body.innerHTML); "//+String.format("function print() {const filename = '% s'; html2canvas (document.body) .then (canvas => {let pdf = new jsPDF ('p', 'mm', 'a4'); pdf.addImage (canvas.toDataURL('image / png'), 'PNG', 0, 0, 1000, 1000); pdf.save (filename);});} print (); ", args [3] .substring (args [3]. lastIndexOf ('/') + 1, args [3] .length () - 4) + "pdf") + "" + " \ n"; //System.out.println(html); try {File file = новый файл ("output.html"); PrintWriter fileWriter = новый PrintWriter (файл); fileWriter.print (html); fileWriter.close ();} catch (IOException e) {e.printStackTrace ();}} публичная статическая строка toHTML (String str) {String html = str; html = html.replace ("&", "&"); html = html.replace ("\" "," ""); html =html.replace ("\ '", "'"); html = html.replace ("<", "<"); html = html.replace (">", ">"); // html = html. replace ("\ n", "
"); html = html.replace ("\ t", "");html + = "
";вернуть HTML;} public static String readFile (String filePath) {String content = "";try {content = new String (Files.readAllBytes (Paths.get (filePath))));} catch (IOException e) {e.printStackTrace ();} вернуть контент;}}
/**PROCESSBUILDEREXAMPLE**/
import java.io.*;
import org.eclipse.jdt.core.compiler.CompilationProgress;
import org.eclipse.jdt.core.compiler.batch.BatchCompiler;
public class ProcessBuilderExample {
private static String JAVA_FILE_LOCATION;
public static void main(String args[]) throws IOException{
JAVA_FILE_LOCATION = args[0];
CompilationProgress progress = null;
BatchCompiler.compile(String.format("-classpath rt.jar %s",args[0]), new PrintWriter(System.out), new PrintWriter(System.err), progress);
Process process = new ProcessBuilder("java", "-cp",
JAVA_FILE_LOCATION.substring(0,JAVA_FILE_LOCATION.lastIndexOf("\\")),
JAVA_FILE_LOCATION.substring(JAVA_FILE_LOCATION.lastIndexOf("\\")+1,JAVA_FILE_LOCATION.length()-5))
.redirectInput(new File(args[1]))
.redirectOutput(new File(args[2])).start();
try {
process.waitFor();
PrettyPrint.main(args);
} catch(Exception e) {
e.printStackTrace();
}
}
}
Сохраните эти 2 в одной папке и запустите processbuildereample с 3 аргументами. Loc кода, loc файла ввода и выходного файла для записи.