Форум программистов, компьютерный форум, киберфорум
Наши страницы

Java ME (J2ME)

Войти
Регистрация
Восстановить пароль
 
Tavashi
1 / 1 / 0
Регистрация: 21.05.2016
Сообщений: 10
#1

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

21.05.2016, 14:13. Просмотров 1414. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.05.2016, 14:13
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Не запускается java-приложение на Symbian 9.1 (Java ME):

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

Не компилируется и не запускается приложение - Java
Решил заняться Java, но вот беда, не могу скомпилировать и запустить свое первое приложение. Установил Java с сайта Оракл, последняя...

Не запускается .jar приложение - Java
Всем привет. В субботу вечером скачал java программу с расширением .jar и удивился, что java на компьютере установлена не была. Зашел на...

не запускается java почему то - Java
решил с джава поиграться, создал файл HelloWorld.java, скомпилировал его через командную строку, файл .class появился, теперь запускаю его...

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

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

12
ВитаминКО
13 / 13 / 1
Регистрация: 17.08.2012
Сообщений: 99
24.05.2016, 01:29 #2
Дело, конечно, твое, но я давно снес 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
1 / 1 / 0
Регистрация: 21.05.2016
Сообщений: 10
24.05.2016, 23:33  [ТС] #3
Цитата Сообщение от ВитаминКО Посмотреть сообщение
Дело, конечно, твое, но я давно снес WTK, ибо есть NetBeans (это полноценная IDE).
Да, есть и нетбинс, и идея, и эклипс ... Пользуюсь последней, как-то исторически так сложилось. Не хотелось возится с эклипсом и искать эмуляторы на маркетплейсе, а потом возится с настройками. Хотелось ради интереса что-то написать для своего старенького N73, а тут попался пример на WTK. Поднял вируталку, установил все это дело. Проверил, код компилится, на эмуляторе работает и для моих начальных по крайней мере задач этого было достаточно. Потом, возможно, перенес бы все на эклипс или на нетбинс, т.к. планирую все-таки на него пересесть. На телефоне приложение-мидлет устанавливается, а вот с запуском - затык

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

Цитата Сообщение от ВитаминКО Посмотреть сообщение
И просто вопрос: почему не писать просто "/" + slideNum + ".png"?
Да, вы правы, можно и так. Пример более чем наполовину заимствованный, объяснить почему использовался метод класса integer'а не могу. Мне было важно проверить и посмотреть, что код скомпилится и приложение запустится на телефоне.
1
ВитаминКО
13 / 13 / 1
Регистрация: 17.08.2012
Сообщений: 99
24.05.2016, 23:53 #4
Tavashi, попробуй этот запустить (смени расширение)
1
Вложения
Тип файла: zip TestMidlet.zip (52.9 Кб, 2 просмотров)
Tavashi
1 / 1 / 0
Регистрация: 21.05.2016
Сообщений: 10
25.05.2016, 00:26  [ТС] #5
ВитаминКО, работает! В чем у меня ошибка?
0
ВитаминКО
13 / 13 / 1
Регистрация: 17.08.2012
Сообщений: 99
25.05.2016, 00:42 #6
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
ВитаминКО
13 / 13 / 1
Регистрация: 17.08.2012
Сообщений: 99
25.05.2016, 00:51 #7
Блин, проект потерялся..
1
Вложения
Тип файла: zip TestMidlet.zip (140.5 Кб, 4 просмотров)
Tavashi
1 / 1 / 0
Регистрация: 21.05.2016
Сообщений: 10
25.05.2016, 01:09  [ТС] #8
Структура папок одинаковая. А вот файлы манифеста отличаются разными версиями 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
ВитаминКО
13 / 13 / 1
Регистрация: 17.08.2012
Сообщений: 99
25.05.2016, 01:27 #9
Tavashi, а SDK какой используется? У меня "Java ME platform SDK 3.0.5". Тот, что идет с WTK, с новыми моделями телефонов может быть несовместим. Собственно, я его снес вместе с WTK.
А картинки можно просто заменить в архиве и проверить.

Ну и на всякий - обнови JDK. Вдруг под ПК будешь писать.
1
Tavashi
1 / 1 / 0
Регистрация: 21.05.2016
Сообщений: 10
26.05.2016, 01:15  [ТС] #10
ВитаминКО,
Вообщем заработало, но я не могу понять почему ... Сначала, я пробовал ваши картинки - не работало. Потом установил 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
ВитаминКО
13 / 13 / 1
Регистрация: 17.08.2012
Сообщений: 99
26.05.2016, 02:19 #11
Tavashi, SDK - это для Java ME, а для Java SE - JDK. Видимо, при обновлении JDK что-то доустановилось, но не откатилось. И, благодаря этому, продолжает работать. Я так думаю.

Но рекомендую обновиться, чтобы все работало.
1
Tavashi
1 / 1 / 0
Регистрация: 21.05.2016
Сообщений: 10
26.05.2016, 14:18  [ТС] #12
ВитаминКО,
Да, возможно, что-то не откатилось. Ради интереса, поставил чистую виртуалку. Установил java 1.4.2_08 и WTK 2.2 и ... почему-то все работает. Причем даже без инициализации в конструкторе. На данный момент, даже не знаю что и думать . Попробую отыскать какой-то способ потейлить логи на телефоне и запустить мидлеты, которые у меня остались и которые не работают.
0
ВитаминКО
13 / 13 / 1
Регистрация: 17.08.2012
Сообщений: 99
26.05.2016, 14:45 #13
Tavashi, JAVA_HOME и т.п. проверь в виртуалке и на основной ОС.
0
26.05.2016, 14:45
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.05.2016, 14:45
Привет! Вот еще темы с ответами:

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

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

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

Многопоточное приложение на Java (Java Thread) - Java SE
Дано было такое задание: Выполнить приложение командной строки с двумя параметрами , один из которых – количество потоков, другой...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru