#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>
При условии, что:
- основной класс, который вы хотите загрузить: mainclasses.emaildownload (класс emaildownload в пакете mainclasses)
- исправление для 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. Извините, я не уверен, что вы имеете в виду. Вы задаете вопрос? Я обновлю свой пост.