←  Баги

Forum JimBot

»

Создание сервиса

Закрыта

 фотография urban 06 Янв 2012

Собственно, в чем суть проблемы.
Я решил написать мод с нуля на Jimbot 0.4.0 pre 4.
В принципе все шло прекрасно, до того момента, пока я не решил протестировать создание сервисов.
Сам код по созданию сервисов я не трогал.
При создании вот такой Лог:
Имя сервиса: test
Вид сервиса: chat
Скрытый текст

Если данную ошибку кто то встречал, и исправил, подскажите как это сделать..
Да и в принципе если кто знает, подскажите, как сделать, что бы сервисы полноценно создавались..
Ответить

 фотография sanchez 06 Янв 2012

Сохрани настройки в админке
Ответить

 фотография scano 06 Янв 2012

Боже, парень, лучше бы ты книжки пошёл читать.
java.io.FileNotFoundException: .\services\test\test.xml (Системе не удается найти указанный путь)
at java.io.FileInputStream.open(Native Method)
Код пытается найти и принудительно (т.к. пропущено условие в коде) прочитать указанный файл, когда его на самом деле нет.
PS. Исправив данную ошибку сразу после неё полезут другии. Пишите от себя, не дублируйте чужое.
Сообщение отредактировал scano: 06 Январь 2012 - 16:22
Ответить

 фотография urban 06 Янв 2012

Но ведь папка scripts все равно не создается...

Просмотр сообщенияscano (06 Январь 2012 - 16:17) писал:

Боже, парень, лучше бы ты книжки пошёл читать.
java.io.FileNotFoundException: .\services\test\test.xml (Системе не удается найти указанный путь) at java.io.FileInputStream.open(Native Method)
Код пытается найти и принудительно (т.к. пропущено условие в коде) прочитать указанный файл, когда его на самом деле нет.
PS. Исправив данную ошибку сразу после её полезут другии. Пишите от себя, не дублируйте чужое.

Да он ищет этот файл.. Но зачем? поиск этого файла начинается при создании самого сервиса, в самом начале логов это видно, хотя вместо поиска и считывания данных он должен создать этот файл... А уже после создания пытаться его найти и читать
Ответить

 фотография sanchez 06 Янв 2012

в стандартном боте 0.4,services.xml создается при сохранении настроек. Достаточно перед загрузкой конфига создать этот файл.
Ответить

 фотография scano 06 Янв 2012

При создании сервиса происходит его инициализация - процесс подготовки объект в работе.
При обращении к файле настроек, прога не в способна действовать по условиям (есть файл или нет, что делать если false, а что выполнять при true), код чисто пытается загрузить настройки не взирая на обстоятельства, от суда и ошибки что файла нет.
Переписывай метод.

Просмотр сообщенияsanchez (06 Январь 2012 - 16:42) писал:

в стандартном боте 0.4,services.xml создается при сохранении настроек. Достаточно перед загрузкой конфига создать этот файл.
Можно всеми популярным вариантов воспользоваться.
	    } catch (Exception ex) {
		    ex.printStackTrace();
		    Log.error("Error opening preferences: ");
		   save(); // add method saved configure
	    }
только для меня это считается кривизной мозгов.
Ответить

 фотография sanchez 06 Янв 2012

	public  void load() {
		try {
		File file = new File(PROPS_FILE);
		File dir = new File(PROPS_FOLDER);
		if(!dir.exists()){		  
			dir.mkdirs();
		}
		if(!file.exists()){		  
			if(file.createNewFile()){
				// файл создан
			} else {
				// err
			}
			return;// смысл грузить пустой файл
		}

// остальная часть кода

Сообщение отредактировал sanchez: 06 Январь 2012 - 17:49
Ответить

 фотография urban 06 Янв 2012

И все таки, почему бот начинает искать это файл при создании сервиса, не создав еще этот файл?
Ответить

 фотография ~ёМАё~ 06 Янв 2012

Просмотр сообщенияurban (06 Январь 2012 - 20:16) писал:

И все таки, почему бот начинает искать это файл при создании сервиса, не создав еще этот файл?
Скрытый текст
ну почитаем логи и отследим весь путь ошибки
MainPage метод srvs_create_in в нем вызывается метод addService класса Manager,
который в свою очередь добавляет в хеш вновь созданный класс ChatServer
в конструкторе класса ChatServer мы можем увидеть строку
ChatProps.getInstance(name).load();
собственно отсюда и начинается ошибка..в классе ChatProps вызывается метод загрузки конфигов которых ещё фактически нет..
достаточно добавить в метод getInstance или load проверку на наличие фйала и сохранение настроек поумолчанию и ошибки не будет
Сообщение отредактировал ~ёМАё~: 06 Январь 2012 - 20:39
Ответить

 фотография urban 08 Янв 2012

Спасибо. Думаю тема исчерпана.
Ответить
Закрыта