Аватар для Tavashi
1172 / 762 / 194
Регистрация: 21.05.2016
Сообщений: 1,858

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

21.05.2016, 14:13. Показов 5537. Ответов 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
Ответ Создать тему
Опции темы

Новые блоги и статьи
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru