Форум программистов, компьютерный форум, киберфорум
Java ME (J2ME)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.81/27: Рейтинг темы: голосов - 27, средняя оценка - 4.81
 Аватар для Tavashi
1172 / 762 / 194
Регистрация: 21.05.2016
Сообщений: 1,858

Не запускается java-приложение на Symbian 9.1

21.05.2016, 14:13. Показов 5505. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Прошу прощения, если что-то оформил не так или такой вопрос уже задавали. В последнем случае укажите, пожалуйста, где - самому найти не удалось. Собственно вопрос:

Написал простую программу на java используя класс MIDlet и загрузил в свой old-but-gold телефон Nokia N73. Для упаковки класса в jar-архив использовал ide J2ME WTK. В самой среде на эмуляторе программа работает, но на самом телефоне - нет. После установки приложения пытаюсь его запустить, но ничего не происходит, а логи в телефоне я не знаю как посмотреть. В настройках телефона пишут J2ME environment: MIDP 2.0, CLDC 1.1. Я пробовал загружать приложение указывая в среде WTK профиль и MIDP 1.0 и MIDP 2.0, конфигурации и CLDC 1.0 и CLDC 1.1, но рез-т тот же. Полагаю, что дело может быть в каких-то настройках или профилях Symbian 9.1, но не знаю как бы это все дело "отдебажить". Кто-то может как-то подсказать в чем причина почему не запускается приложение?

Версия J2ME WTK 2.2, java 1.4.2. На всякий случай, приведу код той самой простенькой программы:
Код
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
import javax.microedition.midlet.MIDlet;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Form;
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Image;
import javax.microedition.lcdui.Ticker;
import java.io.IOException;
 
public class SlideShow extends MIDlet implements CommandListener {
    
    private Display display;
    private Form form;
    private Image image;
    private Command next;
    private Command back;
    private int slideNum = 1;
    private int maxSlideNum = 2;
    
    public void pauseApp() {}
    
    public void destroyApp(boolean unconditional) {
        notifyDestroyed();
    }
    
    public void startApp() {
        display = Display.getDisplay(this);
        form = new Form(null);
        form.setCommandListener(this);
        next = new Command("Next", Command.OK, 1);
        form.addCommand(next);
        back = new Command("Back", Command.BACK, 1);
        form.addCommand(back);
        Ticker t = new Ticker("My Photoalbum");
        form.setTicker(t);
        setImage("/1.png");
        display.setCurrent(form);
    }
    
    public void commandAction(Command c, Displayable d) {
        if (c == next && slideNum < maxSlideNum)
            slideNum++;
        if (c == back && slideNum > 1)
            slideNum--;
        form.delete(0);
        setImage("/" + Integer.toString(slideNum) + ".png");
    }
    
    public void setImage(String path) {
        try {
            image = Image.createImage(path);
        } catch (IOException ioe) {
            System.out.println(ioe.getMessage());
        }
        form.append(image);
    }
}
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
21.05.2016, 14:13
Ответы с готовыми решениями:

QProcess не запускается Java приложение
Здравствуйте! Нужна помощь, пытаюсь запустить Java приложение QProcess startJava(this); QString program = &quot;java...

Symbian 3 или Symbian Anna?
Всем привет! Сможете подсказать в чем минусы и плюсы каждой? Стоит уходить с Symbian 3?

Приложение запускается из play, но не запускается с рабочего стола
Добрый день всем! В чем может быть проблема, если приложение отлично запускается с google play, но не запускается с рабочего стола? В чем...

12
15 / 14 / 2
Регистрация: 17.08.2012
Сообщений: 109
24.05.2016, 01:29
Дело, конечно, твое, но я давно снес WTK, ибо есть NetBeans (это полноценная IDE).
Далее, у нокий часто проблемы были с моими мидлетами, решал это с помощью инициализации в конструкторе, а не в методе startApp(), то бишь:
Java
1
2
3
4
5
6
7
8
9
10
11
12
public SlideShow(){
        display = Display.getDisplay(this);
        form = new Form(null);
        form.setCommandListener(this);
        next = new Command("Next", Command.OK, 1);
        form.addCommand(next);
        back = new Command("Back", Command.BACK, 1);
        form.addCommand(back);
        Ticker t = new Ticker("My Photoalbum");
        form.setTicker(t);
        setImage("/0.png");
}
Java
1
2
3
4
5
6
7
protected void destroyApp(boolean unconditional) {}
 
protected void pauseApp() {}
 
protected void startApp() {
        display.setCurrent(form);
}
Эти шаблоны работали на Nokia 5228, и вроде бы на других моделях. По крайней мере, жалоб не было.

И просто вопрос: почему не писать просто "/" + slideNum + ".png"?
1
 Аватар для Tavashi
1172 / 762 / 194
Регистрация: 21.05.2016
Сообщений: 1,858
24.05.2016, 23:33  [ТС]
Цитата Сообщение от ВитаминКО Посмотреть сообщение
Дело, конечно, твое, но я давно снес WTK, ибо есть NetBeans (это полноценная IDE).
Да, есть и нетбинс, и идея, и эклипс ... Пользуюсь последней, как-то исторически так сложилось. Не хотелось возится с эклипсом и искать эмуляторы на маркетплейсе, а потом возится с настройками. Хотелось ради интереса что-то написать для своего старенького N73, а тут попался пример на WTK. Поднял вируталку, установил все это дело. Проверил, код компилится, на эмуляторе работает и для моих начальных по крайней мере задач этого было достаточно. Потом, возможно, перенес бы все на эклипс или на нетбинс, т.к. планирую все-таки на него пересесть. На телефоне приложение-мидлет устанавливается, а вот с запуском - затык

Цитата Сообщение от ВитаминКО Посмотреть сообщение
Далее, у нокий часто проблемы были с моими мидлетами, решал это с помощью инициализации в конструкторе, а не в методе startApp(), то бишь:
Попробовал через конструктор, но, к сожалению, результат тот же Очень хочется потейлить логи на самом телефоне при запуске приложения, но не знаю чем и как ...

Цитата Сообщение от ВитаминКО Посмотреть сообщение
И просто вопрос: почему не писать просто "/" + slideNum + ".png"?
Да, вы правы, можно и так. Пример более чем наполовину заимствованный, объяснить почему использовался метод класса integer'а не могу. Мне было важно проверить и посмотреть, что код скомпилится и приложение запустится на телефоне.
1
15 / 14 / 2
Регистрация: 17.08.2012
Сообщений: 109
24.05.2016, 23:53
Tavashi, попробуй этот запустить (смени расширение)
Вложения
Тип файла: zip TestMidlet.zip (52.9 Кб, 2 просмотров)
1
 Аватар для Tavashi
1172 / 762 / 194
Регистрация: 21.05.2016
Сообщений: 1,858
25.05.2016, 00:26  [ТС]
ВитаминКО, работает! В чем у меня ошибка?
0
15 / 14 / 2
Регистрация: 17.08.2012
Сообщений: 109
25.05.2016, 00:42
Tavashi, в коде ошибок не нашел, разве что в логике самой программы.
Код
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
package ru.cyberforum;
 
import java.io.IOException;
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Form;
import javax.microedition.lcdui.Image;
import javax.microedition.lcdui.Ticker;
import javax.microedition.midlet.MIDlet;
 
/**
 *
 * @author ВитаминКО
 */
public class SlideShow extends MIDlet implements CommandListener  {
    private final Display display;
    private final Form form;
    private final Command next;
    private final Command back;
    private int slideNum = 1;
    private final int maxSlideNum = 2;
    private Image image;
 
    public SlideShow(){
        display = Display.getDisplay(this);
        form = new Form(null);
        form.setCommandListener(this);
        next = new Command("Next", Command.OK, 1);
        form.addCommand(next);
        back = new Command("Back", Command.BACK, 1);
        form.addCommand(back);
        Ticker t = new Ticker("My Photoalbum");
        form.setTicker(t);
        setImage("/" + slideNum + ".png");
    }
    
    protected void destroyApp(boolean unconditional) {
    }
 
    protected void pauseApp() {
    }
 
    protected void startApp() {
        display.setCurrent(form);
    }
 
    public void commandAction(Command c, Displayable d) {
        if (c == next && slideNum < maxSlideNum){
            slideNum++;
        }
        if (c == back && slideNum > 0){
            slideNum--;
        }
        form.delete(0);
        setImage("/" + slideNum + ".png");
    }
 
    private void setImage(String path) {
        try {
            image = Image.createImage(path);
        } catch (IOException ioe) {
            System.out.println(ioe.getMessage());
        }
        form.append(image);
    }
    
}

Собирал в нетбинсе, проект приложил. Сравни структуру папок (на пакет не обращай внимания, он роли не играет).

Как вообще происходит запуск твоего приложения? Может, исключения/алерты появляются или просто пустой экран?
1
15 / 14 / 2
Регистрация: 17.08.2012
Сообщений: 109
25.05.2016, 00:51
Блин, проект потерялся..
Вложения
Тип файла: zip TestMidlet.zip (140.5 Кб, 5 просмотров)
1
 Аватар для Tavashi
1172 / 762 / 194
Регистрация: 21.05.2016
Сообщений: 1,858
25.05.2016, 01:09  [ТС]
Структура папок одинаковая. А вот файлы манифеста отличаются разными версиями java:
Manifest-Version: 1.0
Ant-Version: Apache Ant 1.9.1
Created-By: 1.7.0_07-b11 (Oracle Corporation)
MIDlet-1: SlideShow,,ru.cyberforum.SlideShow
MIDlet-Vendor: Vendor
MIDlet-Name: TestMidlet
MIDlet-Version: 1.0
MicroEdition-Configuration: CLDC-1.1
MicroEdition-Profile: MIDP-2.0

Manifest-Version: 1.0
Created-By: 1.4.2_08 (Sun Microsystems Inc.)
MIDlet-1: SlideShow, SlideShow.png, SlideShow
MIDlet-Vendor: MyTestApp
MIDlet-Name: SlideShow
MIDlet-Version: 1.0
MicroEdition-Configuration: CLDC-1.1
MicroEdition-Profile: MIDP-2.0

Как вообще происходит запуск твоего приложения? Может, исключения/алерты появляются или просто пустой экран?
Запуск на телефоне стандартный, просто выбираю его в списке приложений. Далее ничего не происходит, ни алертов, ни исключений. С ними повеселее бы даже было. После нажатия на иконку приложения совсем ничего не происходит, как будто бы и не нажимал. Может дело как-то в картинках или все-таки в версии java
0
15 / 14 / 2
Регистрация: 17.08.2012
Сообщений: 109
25.05.2016, 01:27
Tavashi, а SDK какой используется? У меня "Java ME platform SDK 3.0.5". Тот, что идет с WTK, с новыми моделями телефонов может быть несовместим. Собственно, я его снес вместе с WTK.
А картинки можно просто заменить в архиве и проверить.

Ну и на всякий - обнови JDK. Вдруг под ПК будешь писать.
1
 Аватар для Tavashi
1172 / 762 / 194
Регистрация: 21.05.2016
Сообщений: 1,858
26.05.2016, 01:15  [ТС]
ВитаминКО,
Вообщем заработало, но я не могу понять почему ... Сначала, я пробовал ваши картинки - не работало. Потом установил Java ME SDK 3.0, но и через нее не заработало. Потом поставил sdk 1.7 - и заработало. Я удалил среду Java ME SDK 3.0, стал пробовать в WTK 2.2 на том же sdk - работает. Подумал, что дело было все-таки в версии java. Решил удостовериться и вернулся обратно к sdk 1.4.2 - и тоже работает. Получилось, что все работает на связке WTK 2.2 + sdk 1.4.2. В коде ничего не менял и где именно произошло изменение не могу понять. У меня до сих пор есть тестовые мидлеты, которые так и не запускаются. Вообщем, пока что все получилось по известному мему: "моя программа не работает - не пойму почему, моя программа работает - и я тоже не пойму почему".
0
15 / 14 / 2
Регистрация: 17.08.2012
Сообщений: 109
26.05.2016, 02:19
Лучший ответ Сообщение было отмечено Tavashi как решение

Решение

Tavashi, SDK - это для Java ME, а для Java SE - JDK. Видимо, при обновлении JDK что-то доустановилось, но не откатилось. И, благодаря этому, продолжает работать. Я так думаю.

Но рекомендую обновиться, чтобы все работало.
1
 Аватар для Tavashi
1172 / 762 / 194
Регистрация: 21.05.2016
Сообщений: 1,858
26.05.2016, 14:18  [ТС]
ВитаминКО,
Да, возможно, что-то не откатилось. Ради интереса, поставил чистую виртуалку. Установил java 1.4.2_08 и WTK 2.2 и ... почему-то все работает. Причем даже без инициализации в конструкторе. На данный момент, даже не знаю что и думать . Попробую отыскать какой-то способ потейлить логи на телефоне и запустить мидлеты, которые у меня остались и которые не работают.
0
15 / 14 / 2
Регистрация: 17.08.2012
Сообщений: 109
26.05.2016, 14:45
Tavashi, JAVA_HOME и т.п. проверь в виртуалке и на основной ОС.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
26.05.2016, 14:45
Помогаю со студенческими работами здесь

Не запускается приложение, ни из Debug ни из Release, но запускается из VS
Пишу программу, и местами её дополняю. Где то пару дней назад запускал её, прямо из .exe, без VS 2013, и всё чики пуки запускалось. ...

Как java-приложение может попросить OS запустить внешнее приложение?
Как java-приложение может попросить OS запустить внешнее приложение?

Создать Windows приложение на Java в NetBeans (Java Desktop Application)
Здравствуйте. Хочу создать Windows-приложение на Java с помощью NetBeans 7.3. При создании нового проекта в подразделе «Java» должен быть...

Можно ли на обычной JAVA написать приложение для смарт-карт или требуется на JAVA CARD
обычная JAVA или требуется именно JAVACARD

Чтение теста из файлов в Java. java коллекции, потоки. создать приложение, в котором будет два отдельных потока
Создайте два текстовых файла с именами, например, countries.txt и capitals.txt. В первом файле должны быть перечислены названия стран,...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru