2015-02-16 3 views
-1

Этот код я нашел в 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 
    } 

} 
+0

Я думаю, что вы пытаетесь выполнить программу как стандартное Java-приложение вместо веб-приложения. Вот почему компилятор java ищет основной метод, но не находит его. Вы знаете, как запустить веб-приложение? Большинство людей начинают с [tomcat] (http://tomcat.apache.org/). – lateralus

+0

Я выполняю его как веб-приложение. Я создал динамический веб-проект в netbeans и использует GlassFish Server. Я использую Google chrome для запуска проекта – user23456677

ответ

0

в вашем коде некоторые вещь misscorrect то в первую очередь изменения кода в то время как ((routput = stdInput.readLine())! = NULL) { и в то время как ((rerror = stdError.readLine (!)) = NULL) {

Место нуль вы пишете «-1» и компилировать и ром программы

после этой коррекции программы, то и получил errror как: не удалось найти или загрузить основной класс , тогда программа ur не загружает jre, а затем устанавливает ur jre в программе.

+0

Если я пишу «-1» вместо нуля, он переходит в бесконечный цикл – user23456677

Смежные вопросы