Форум программистов, компьютерный форум, киберфорум
Наши страницы
Java
Войти
Регистрация
Восстановить пароль
 
_fOrZe
0 / 0 / 0
Регистрация: 23.02.2016
Сообщений: 27
1

Запустить скомпилированный класс Main.class из Java кода

18.10.2017, 21:34. Просмотров 199. Ответов 2
Метки нет (Все метки)

Доброго времени суток! Нужно запустить Main.class из Java кода. Код, который привел ниже, с компиляцией Main.java справляется неплохо. А вот запустить его не получается. Выдает ошибку Error: Could not find or load main class d:\problem\Main
Но когда я пытаюсь запустить Main.class не из кода, а просто "ручками" через cmd , то всё работает, хоть использую ту же команду, которую передаю ProcessBuilder' у . Пытался "запихивать" команду java Main в батник и запускать уже его. Результат тот же(( Если у кого-то есть идеи, посоветуйте, как решить эту проблему. Заранее благодарю за ответы!


Код :
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
 
/**
 * Created by Александр on 18.10.2017.
 */
public class Main {
    public static void main(String[] args) throws IOException, InterruptedException {
 
        // если скомпилировалось
        if(compile()){
            run();
        }
    }
 
    // компилирует файл
    private static boolean compile() throws IOException, InterruptedException {
 
        // компилируем
        ProcessBuilder p = new ProcessBuilder("javac", "d:\\problem\\Main.java");
        p.redirectErrorStream(true);
        Process process = p.start();
 
 
        // выводим на экран стандартный поток вывода
        InputStream stdout = process.getInputStream();
        InputStreamReader isrStdout = new InputStreamReader(stdout);
        BufferedReader brStdout = new BufferedReader(isrStdout);
 
        String line = null;
        while((line = brStdout.readLine()) != null) {
            System.out.println(line);
        }
 
        // ждем пока завершится вызванная программа
        // и сохраняем код, с которым она завершилась в
        // в переменную exitVal
        int exitVal = process.waitFor();
 
        // если процесс компиляции завершился с ошибкой
        if (exitVal != 0){
            return false;
        }else{
 
            // если ошибок не было
            return true;
        }
    }
 
    // запускаем скомпилированный файл
    private static void run() throws IOException, InterruptedException {
 
        // запускаем
        ProcessBuilder processBuilder = new ProcessBuilder("java ", "d:\\problem\\Main");
        processBuilder.redirectErrorStream(true);
        Process process = processBuilder.start();
 
        // выводим на экран стандартный поток вывода
        InputStream stdout = process.getInputStream();
        InputStreamReader isrStdout = new InputStreamReader(stdout);
        BufferedReader brStdout = new BufferedReader(isrStdout);
 
        String line = null;
        while((line = brStdout.readLine()) != null) {
            System.out.println(line);
        }
 
        // ждем пока завершится вызванная программа
        // и сохраняем код, с которым она завершилась в
        // в переменную exitVal
        int exitVal = process.waitFor();
 
    }
 
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.10.2017, 21:34
Ответы с готовыми решениями:

bad class file: C:Program FilesJavajre1.5.0_02lib t.jar(java/lang/Object.class) class file has wrong version 49.0, should be 48.0
написал тестовый td_jsp.jsp фаил ->> <html> <head><title>JSP...

Возможно ли изменить скомпилированный класс?
Попрошу не материться, а ответить на простой вопрос: на одном форуме (не JAVA)...

could not find the main class
Всем доброго времени суток есть такая проблема: запускаю приложение (бот для...

could not find the main class
Извените, что я задал такой примитивный вопрос.Но я хочу стартовать .Помогите...

Error: could not find or load main class
Добрый день всем! Уже десятки раз наверно везде задавали этот вопрос, но я...

2
xoraxax
1376 / 1309 / 390
Регистрация: 05.07.2013
Сообщений: 6,315
Завершенные тесты: 2
18.10.2017, 22:00 2
зачем все эти извращения?
ProcessBuilder("java.exe","-cp","path_to_jar","MyClassName");
1
_fOrZe
0 / 0 / 0
Регистрация: 23.02.2016
Сообщений: 27
18.10.2017, 22:31  [ТС] 3
xoraxax, спасибо за ответ! Не подскажете, как получить .jar из Main.java . Ведь после компиляции есть только main.class . А для сборки в .jar , насколько я понимаю, уже нужно пользоваться средствами IDE. Если я что-то не так понимаю, поправьте меня)

Добавлено через 18 минут
с созданием .jar разобрался!
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.10.2017, 22:31

Error: Could not find or load main class
Пол дня читаю/проверяю/мучаюсь с запуском учебной програмки. Смотрите скрин....

Error: Could not find or load main class ORDOGOR
Вот код помогите пожалуйста кто разбирается package ORD; import...

Error: Could not find or load main class Example в cmd
В первые начал изучать Java, и столкнулся с проблемой. Написал код: public...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru