ошибка при запуске файла java с использованием другого файла java

#java #error-handling

#java #обработка ошибок

Вопрос:

На самом деле я пытаюсь запустить свой java-файл, используя другой java-файл в Windows …. и это мой код:

 private static void printLines(String name, InputStream ins) throws Exception {
    String line = null;
    BufferedReader in = new BufferedReader(
        new InputStreamReader(ins));
    while ((line = in.readLine()) != null) {
        System.out.println(name   " "   line);
    }
  }

  private static void runProcess(String command) throws Exception {
      String s=System.getProperty("user.dir");
      s="C:\Users\HP\Downloads\apache-tomcat-7.0.54-windows-x64\apache-tomcat-7.0.54\webapps\Mazil4.0\WEB-INF\classes";
  File workingDir = new File(s);
  System.out.println(q);
  //new Foo().nonStaticMethod();
Process pro = Runtime.getRuntime().exec(command,null,workingDir);

printLines(command   " stdout:", pro.getInputStream());
printLines(command   " stderr:", pro.getErrorStream());
pro.waitFor();
System.out.println(command   " exitValue() "   pro.exitValue());


 }


  public static void mai(String[] args) {

      String[] credentials=new String[4];int k=0;
      for (String s: args) {
          System.out.println(s);
        credentials[k]=s;k  ;
    if(k==4)
    break;
      }


    try {
      //runProcess("javac test2.java");
        //thread foo=new thread();
      runProcess("java mainclasses.emaildownload " credentials[0] " " credentials[1] " " credentials[2] " " credentials[3] " ");

    } catch (Exception e) {
      e.printStackTrace();
    }System.out.println("hI");
  }
  

Я указываю местоположение класса с помощью workingDir … и мой путь к файлу:

 C:UsersHPDownloadsapache-tomcat-7.0.54-windows-x64apache-tomcat-7.0.54webappsMazil4.0WEB-INFclassesmainclassesemaildownload.class
  

имя пакета — mainclasses. но он все равно выдает ошибку:

 could not find or load main class mainclasses.emaildownload
  

в чем может быть причина?

Комментарии:

1. Является ли emaildownload основным именем класса?

Ответ №1:

В этой строке:

 public static void mai(String[] args) {
  

отсутствует ‘n’.

Изменить на

 public static void main(String[] args) {
  

Комментарии:

1. на самом деле это не проблема, я использую его в jsp, поэтому я хочу, чтобы это было только так

2. Вы вызываете метод main из jsp?

3. что я делаю, так это thread.mai(id); где thread — это имя класса и идентификатор типа String[]

Ответ №2:

Я считаю, что команда должна выглядеть так:

 java -cp <path-to-jar> <main-class>
  

При условии, что:

  1. основной класс, который вы хотите загрузить: mainclasses.emaildownload (класс emaildownload в пакете mainclasses)
  2. исправление для jar, содержащего данный основной класс: C:UsersHPDownloadsapache-tomcat-7.0.54-windows-x64apache-tomcat-7.0.54webappsMazil4.0WEB-INFclasses

команда должна выглядеть так:

 java -cp C:UsersHPDownloadsapache-tomcat-7.0.54-windows-x64apache-tomcat-7.0.54webappsMazil4.0WEB-INFclasses<jar-file> mainclasses.emaildownload
  

или вы можете использовать подстановочный знак:

 java -cp "C:UsersHPDownloadsapache-tomcat-7.0.54-windows-x64apache-tomcat-7.0.54webappsMazil4.0WEB-INFclasses*" mainclasses.emaildownload
  

Комментарии:

1. Что не так с этой реализацией и должно ли это быть так: java -cp /././. mainclasses.emaildownload

2. Извините, я не уверен, что вы имеете в виду. Вы задаете вопрос? Я обновлю свой пост.