Форум программистов, компьютерный форум, киберфорум
Java для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.93/29: Рейтинг темы: голосов - 29, средняя оценка - 4.93
 Аватар для programistnadne
27 / 24 / 5
Регистрация: 11.10.2017
Сообщений: 421

Ошибка Could not find or load main class jade.Boot

19.03.2020, 18:04. Показов 5916. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Делаю лабу по jade. Скачал библиотеку с офф сайта, добавил ссылку (в classpath) на неё в проекте Eclipse создал пакет и два тестовых класса, настроил Run Configurations -> Java Application чтобы проект запускался с нужным главным классом (jade.Boot) и с нужными параметрами (-gui Frodo:supply.DeliveryAgent;RokovayaGora: supply.StoreAgent).
Настройки запуска с которыми всё работает:
Кликните здесь для просмотра всего текста

Всё работает, всё замечательно.

В папке bin проекта я получаю каталог с именем пакета и двумя скомпилированными классами. Как их запускать самому не понятно. Сначала я подумал, что мне нужно в папке бин открыть командную строку и ввести команду java jade.Boot -gui Frodo:supply.DeliveryAgent;RokovayaGora:supply.StoreAgent. Но нет никакой ссылки на класс jade.Boot (что в принципе понятно, ведь я не копирую библиотеку в каталог bin).

Тогда я попробовал создать отдельный пакет, который бы находил библиотеку jade.Boot и запускал её с нужными мне параметрами (Чтобы я в каталоге bin мог просто написать java main.Main и всё. Но у меня по прежнему выходит ошибка о том, что класс jade.Boot не найден.

Код класса команды
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
package main;
 
public class ConsoleCommand implements ICommand {
    private static final String format = "%s /c start %s.exe /K \"%s\"";
    private String sreda;
    private String commanda;
 
    public ConsoleCommand() {
        // TODO Auto-generated constructor stub
    }
    
    public ConsoleCommand(String sreda, String commanda) {
        super();
        this.sreda = sreda;
        this.commanda = commanda;
    }
    
    public void Execute() {
        try {
            var args = new Object[] {this.sreda, this.sreda, commanda};
            Runtime.getRuntime().exec(String.format(format, args));
        } catch (Exception e) {
            System.out.println("Wrong!");
            e.printStackTrace();
        }
    }
}
Код класса который эту команду создаёт и запускает
Java
1
2
3
4
5
6
7
8
9
10
package main;
 
public class Main {
    public static void main(String[] args) {
        ICommand command = new ConsoleCommand("cmd", "java "
                + "-classpath S:\\Java\\eclipse\\workspace\\AgentPotrebitel\\lib jade.Boot "
                + "-gui Frodo:supply.DeliveryAgent;RokovayaGora:supply.StoreAgent");
        command.Execute();
    }
}
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
19.03.2020, 18:04
Ответы с готовыми решениями:

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

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

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

14
 Аватар для programistnadne
27 / 24 / 5
Регистрация: 11.10.2017
Сообщений: 421
19.03.2020, 18:10  [ТС]
На джаве пишу впервые, до этого писал только на c# и с Eclipse дело никогда не имел.
На всякий случай выложу ещё ошибку в консоле и расположение файлов проекте.
Кликните здесь для просмотра всего текста

Проект

Результат

0
Модератор
Эксперт Java
 Аватар для alecss131
2857 / 1364 / 407
Регистрация: 11.08.2017
Сообщений: 4,361
Записей в блоге: 2
19.03.2020, 18:23
Лучший ответ Сообщение было отмечено programistnadne как решение

Решение

Та папка не для внешнего запуска, только для внутреннего пользования эклипсом. Правой кнопкой по проекту экспорт и выбирай runnable jar, на выходе получите jar файл с нужными библиотеками внутри. А запускайте его так java -jar %имя-файла% %параметры-запуска%
1
 Аватар для programistnadne
27 / 24 / 5
Регистрация: 11.10.2017
Сообщений: 421
19.03.2020, 18:45  [ТС]
alecss131, Получаю следующую ошибку
Кликните здесь для просмотра всего текста


Я подумал что дело в том, что у классов агентов нет метода main (Но он им не нужен). Я его добавил и ничего не изменилось.
StoreAgent.class
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
package supply;
 
import jade.core.Agent;
import jade.core.behaviours.SimpleBehaviour;
 
public class StoreAgent extends Agent {
    public static void main(String[] args) {
        
    }
    protected void setup() {
        addBehaviour(new B1(this));
    }
 
    class B1 extends SimpleBehaviour {
        public B1(Agent a) {
            super(a);
        }
 
        public void action() {
            String format = "My name is %s";
            System.out.println(String.format(format, myAgent.getLocalName()));
        }
 
        private boolean finished = false;
 
        public boolean done() {
            return finished;
        }
    }
}
DeliveryAgent.class
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
package supply;
 
import jade.core.Agent;
import jade.core.behaviours.SimpleBehaviour;
 
public class DeliveryAgent extends Agent{
    public static void main(String[] args) {
        
    }
    protected void setup() {
        addBehaviour(new B1(this));
    }
    
    class B1 extends SimpleBehaviour{
        public B1(Agent a)
        {
            super(a);
        }
        public void action() {
            String format = "My name is %s";
            System.out.println(String.format(format, myAgent.getLocalName() ) );
        }
        
        private boolean finished = false;
        public  boolean done() {  return finished; }
    }
    
}
В качестве Launch Configuration выбираю тот, что описывал в своём первом посте. Нужно выбирать что-то другое?
0
 Аватар для programistnadne
27 / 24 / 5
Регистрация: 11.10.2017
Сообщений: 421
19.03.2020, 18:52  [ТС]
Мне нужно чтобы входной точкой у программы был класс Main, который бы получал путь к файлу input.txt и исходя из данных в нём отправлял в консольную команду список агентов, которых должен создать класс jade.Boot. Как в этом примере.
0
Модератор
Эксперт Java
 Аватар для alecss131
2857 / 1364 / 407
Регистрация: 11.08.2017
Сообщений: 4,361
Записей в блоге: 2
19.03.2020, 18:58
Похоже понимаю в чем дело, откройте получившийся файл и найдите в нем файл jade.Boot, по идее должен быть jade/Boot.class если он там есть то попробуйте запустить так java -cp %путь-к-jar-файлу% %ваша-строка-запуска%. Похоже ваши классы должны запускаться от jade.Boot который в случае сборки runnable jar должен быть внутри, так как запуск с параметром -cp то конфигурация при сборке не важна.
0
 Аватар для programistnadne
27 / 24 / 5
Регистрация: 11.10.2017
Сообщений: 421
19.03.2020, 18:58  [ТС]
Я исправил класс Main, теперь он находит библиотеку!
Java
1
2
3
4
5
6
7
8
9
10
public class Main {
    public static void main(String[] args) {
        if (args.length == 0) {
            ICommand command = new ConsoleCommand("cmd",
                    "java " + "-classpath S:\\Java\\eclipse\\workspace\\AgentPotrebitel\\lib\\jade.jar jade.Boot "
                            + "-gui Frodo:supply.DeliveryAgent;RokovayaGora:supply.StoreAgent");
            command.Execute();
        }
    }
}
Но у меня путь привязан к моему ноутбуку, а должен он искать в каком-то относительном месте, так как же правильно написать? И как собрать проект?
0
Модератор
Эксперт Java
 Аватар для alecss131
2857 / 1364 / 407
Регистрация: 11.08.2017
Сообщений: 4,361
Записей в блоге: 2
19.03.2020, 19:02
Мой вариант сборки файл jade.jar должен упаковать вместе с вашими классами и по идее всю строку запуска можно прописать в файле manifest и тогда будет работать по двойному клику.
0
 Аватар для programistnadne
27 / 24 / 5
Регистрация: 11.10.2017
Сообщений: 421
19.03.2020, 19:04  [ТС]
Цитата Сообщение от alecss131 Посмотреть сообщение
получившийся файл
Но я ничего не получил) Или я не там ищу...

Добавлено через 2 минуты
Цитата Сообщение от alecss131 Посмотреть сообщение
Мой вариант сборки файл jade.jar должен упаковать вместе с вашими классами и по идее всю строку запуска можно прописать в файле manifest и тогда будет работать по двойному клику.
Теперь я вижу, jade.jar добавился в папку bin
0
Модератор
Эксперт Java
 Аватар для alecss131
2857 / 1364 / 407
Регистрация: 11.08.2017
Сообщений: 4,361
Записей в блоге: 2
19.03.2020, 19:11
Правой кнопкой по проекту и экспорт, потом выбрать runnable jar и в одном из мест выбираете куда сохранить, ищите там где выбрали, на выходе получится новый файл, или вы выбираете библиотеку при этом действии? надо указать новое имя
Если что то jar файл это по сути просто zip архив

Добавлено через 3 минуты
Да и не трогайте эту папку bin, она не для этого, это просто эклипс там хранит то что запускает.
0
 Аватар для programistnadne
27 / 24 / 5
Регистрация: 11.10.2017
Сообщений: 421
19.03.2020, 19:14  [ТС]
alecss131, Получил новый файл, но экспортировалось опять с ошибкой.
Вот содержание нового jar файла.
Кликните здесь для просмотра всего текста
0
 Аватар для programistnadne
27 / 24 / 5
Регистрация: 11.10.2017
Сообщений: 421
19.03.2020, 19:20  [ТС]
Цитата Сообщение от alecss131 Посмотреть сообщение
Да и не трогайте эту папку bin, она не для этого, это просто эклипс там хранит то что запускает.
Понял, понял, больше не буду.

Добавлено через 2 минуты
Цитата Сообщение от alecss131 Посмотреть сообщение
java -jar %имя-файла% %параметры-запуска%
И он не запускается вот таким способом. Может я как-то должен был указать, что надо запускать через класс Main?
Всё запускается, просто надо было писать Agents.jar а не Agents)
0
Модератор
Эксперт Java
 Аватар для alecss131
2857 / 1364 / 407
Регистрация: 11.08.2017
Сообщений: 4,361
Записей в блоге: 2
19.03.2020, 19:21
Ну вот теперь с этим файлом запускайте командную строку "java -cp %новый-джарник% jade.Boot -gui Frodo:supply.DeliveryAgent;RokovayaGora: supply.StoreAgent" (без кавычек)
ошшибка это он пишет что нету маин методов в ваших классах, но судя по всему вам они не нужны
0
 Аватар для programistnadne
27 / 24 / 5
Регистрация: 11.10.2017
Сообщений: 421
19.03.2020, 19:38  [ТС]
Цитата Сообщение от alecss131 Посмотреть сообщение
Ну вот теперь с этим файлом запускайте командную строку "java -cp %новый-джарник% jade.Boot -gui Frodo:supply.DeliveryAgent;RokovayaGora: supply.StoreAgent" (без кавычек)
Ну теперь всё работает, как будто я запустил через Run Configuration в Eclipse, только весь вывод идёт в консоль. А как сделать файл манифеста, чтобы я мог легко менять параметры для jade.Boot?

Добавлено через 36 секунд
И получается пакет main мне не нужен?
0
Модератор
Эксперт Java
 Аватар для alecss131
2857 / 1364 / 407
Регистрация: 11.08.2017
Сообщений: 4,361
Записей в блоге: 2
19.03.2020, 19:53
Пакет этот лишний, как вариант можно создать класс как у вас только немного иной. В этом классе считывать тхт файл и считанное передавать методу main класса jadeBoot. И этот класс прописать в манифесте, а для изменения параметров надо будет менять содержимое файла
например так:
Java
1
2
3
4
5
6
7
8
9
10
public class Main {
public static void main(String args[]) {
try (Scanner sc = new Scanner(new File("input.txt"))) {
String args[] = sc.nextLine().split(" ");
jade.Boot.main(args);
} catch (IOException e) {
e.printStackTrace();
}
}
}
Нечто такое по идее, сейчас не на компе и не могу проверить код, даже онлайн копилятор не могу (браузер без скриптов)
файл input.txt должен лежать рядом с исполняемым jar файлом, при создании которого указать класс Main написанный выше, тогда можно запускать двойным кликом, в файл тогда писать jade.Boot не надо
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
19.03.2020, 19:53
Помогаю со студенческими работами здесь

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

Ошибка 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...

Ошибка: Could not find or load main class
package ua.lviv.lgs; public class Task_1 { public static void main(String args){ Cat myCat = Cat(); ...

Ошибка:Error: Could not find or load main class simpleFrame
import java.awt.EventQueue; import javax.swing.JFrame; public class simpleFrame { public static void main(String args){ ...

Ошибка сборки Maven - Error: Could not find or load main class –Xmx512M
Не могу собрать проект. Лог из IDEA: C:\Program Files\Java\jdk1.8.0_45\bin\java" -Xms512M –Xmx512M -XX:MaxPermSize=256M...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru