Форум программистов, компьютерный форум, киберфорум
Java
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 23.02.2016
Сообщений: 27

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

18.10.2017, 21:34. Показов 1309. Ответов 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
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
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 test</title></head> <body> <p>JSP test</p> </body> ...

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

Ошибка IntelliJ IDEA Error: Could not find or load main class Main
package lysenko; public class Dog { String name; public static void main(String args) { Dog dog1 = new...

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

Добавлено через 18 минут
с созданием .jar разобрался!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
18.10.2017, 22:31
Помогаю со студенческими работами здесь

Error: Could not find or load main class com.intellij.idea.Main
$ java -version openjdk version "1.8.0_151" OpenJDK Runtime Environment (build 1.8.0_151-8u151-b12-1~deb9u1-b12) OpenJDK 64-Bit...

Ошибка: class Main is public, should be declared in a named Main.java
Выдает ошибку- class Main is public, should be declared in a file named Main.java - к коду: // описываем отдельный новый класс class...

Error:(21, 24) java: Illegal static declaration in inner class Progon.Main
Почему не работает код? Error:(21, 24) java: Illegal static declaration in inner class Progon.Main modifier 'static' is only allowed in...

Как запустить программу, если написано: "Decompiled .class file, bytecode version: 52.0 (Java 8)"?
// // Source code recreated from a .class file by IntelliJ IDEA // (powered by Fernflower decompiler) // package com.company; ...

Exception in thread "main" java.lang.NullPointerException at Main.main
Извините, перемещю в нужный раздел как только найду как это сделать Задание: Создать масив объектов класса, определить значение полей...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru