Этот код я нашел в stackoverflow, но ответы не смогли решить проблему. Я создаю веб-компилятор, где я беру имя java-файла, используя строку «name» и код, используя строку «text». Я компилирую и выполняю код, используя Runtime.getRuntime(). Exec(). Вывод программы будет считываться в строке маршрутизации, а поток ошибок будет считываться в строке rerror. Теперь строка маршрутизации показывает нуль, но отображается строка reerror strng: Не удалось найти или загрузить основной класс C: \ Users \ NIHAR \ workspace2 \ MyFirstJavaProgram11.class. Я даже попытался удалить расширение .class в команде run. Скажите, пожалуйста, как я могу получить вывод и отобразить его с помощью сервлета.Невозможно загрузить основной класс с помощью сервлета
package Org.ServletEx.Test;
import java.io.IOException;
import java.io.*;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class FileCreater
*/
@WebServlet("/ServletExample")
public class ServletExample extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public ServletExample() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
* response)
*/
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
String title = "Database Result";
String docType = "<!doctype html public\"-//w3c//dt html 4.0"
+ "transitional//en\">\n";
String name = request.getParameter("text1");
String text = request.getParameter("TEXTAREA1");
// String file = application.getRealPath("/new10.java");
// String file = "JCQProject\\src\\"+name+".java";
// String file = System.getProperty("user.home")+"\\Desktop\\"
// +name+".java";
try {
File file = new File(
"C:\\Users\\NIHAR\\workspace2\\" + name
+ ".java");
if (file.delete()) {
System.out.println(file.getName() + " is deleted!");
} else {
System.out.println("Delete operation is failed.");
}
} catch (Exception e) {
e.printStackTrace();
}
String file = "C:\\Users\\NIHAR\\workspace2\\"
+ name + ".java";
FileWriter filewriter = new FileWriter(file, true);
filewriter.write(text);
filewriter.close();
try {
// Process d = Runtime.getRuntime().exec(" set path=\"C:\\Program Files\\Java\\jdk1.7.0_03\\bin\"");
Process p = Runtime.getRuntime().exec(
"javac C:\\Users\\NIHAR\\workspace2\\"
+ name + ".java");
Process c = Runtime.getRuntime().exec("java C:\\Users\\NIHAR\\workspace2\\" + name);
BufferedReader stdInput = new BufferedReader(new InputStreamReader(c.getInputStream()));
BufferedReader stdError = new BufferedReader(new InputStreamReader(c.getErrorStream()));
String routput="";
while ((routput = stdInput.readLine()) != null) {
//process readLine
response.getWriter().println(routput);
}
response.getWriter().println(routput);
String rerror;
while ((rerror = stdError.readLine()) != null) {
//process readLine
response.getWriter().println(rerror);
}
response.getWriter().println(rerror);
}
catch (Exception e) {
System.out.println(e.toString());
e.printStackTrace();
}
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
* response)
*/
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
// TODO Auto-generated method stub
}
}
Я думаю, что вы пытаетесь выполнить программу как стандартное Java-приложение вместо веб-приложения. Вот почему компилятор java ищет основной метод, но не находит его. Вы знаете, как запустить веб-приложение? Большинство людей начинают с [tomcat] (http://tomcat.apache.org/). – lateralus
Я выполняю его как веб-приложение. Я создал динамический веб-проект в netbeans и использует GlassFish Server. Я использую Google chrome для запуска проекта – user23456677