Форум программистов, компьютерный форум CyberForum.ru

Java ME (J2ME)

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

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

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

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

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

Цитата Сообщение от ВитаминКО Посмотреть сообщение
И просто вопрос: почему не писать просто "/" + slideNum + ".png"?
Да, вы правы, можно и так. Пример более чем наполовину заимствованный, объяснить почему использовался метод класса integer'а не могу. Мне было важно проверить и посмотреть, что код скомпилится и приложение запустится на телефоне.
ВитаминКО
11 / 11 / 1
Регистрация: 17.08.2012
Сообщений: 94
24.05.2016, 23:53     Не запускается java-приложение на Symbian 9.1 #4
Tavashi, попробуй этот запустить (смени расширение)
Вложения
Тип файла: zip TestMidlet.zip (52.9 Кб, 1 просмотров)
Tavashi
0 / 0 / 0
Регистрация: 21.05.2016
Сообщений: 10
25.05.2016, 00:26  [ТС]     Не запускается java-приложение на Symbian 9.1 #5
ВитаминКО, работает! В чем у меня ошибка?
ВитаминКО
11 / 11 / 1
Регистрация: 17.08.2012
Сообщений: 94
25.05.2016, 00:42     Не запускается java-приложение на Symbian 9.1 #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);
    }
    
}

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

Как вообще происходит запуск твоего приложения? Может, исключения/алерты появляются или просто пустой экран?
ВитаминКО
11 / 11 / 1
Регистрация: 17.08.2012
Сообщений: 94
25.05.2016, 00:51     Не запускается java-приложение на Symbian 9.1 #7
Блин, проект потерялся..
Вложения
Тип файла: zip TestMidlet.zip (140.5 Кб, 2 просмотров)
Tavashi
0 / 0 / 0
Регистрация: 21.05.2016
Сообщений: 10
25.05.2016, 01:09  [ТС]     Не запускается java-приложение на Symbian 9.1 #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
ВитаминКО
11 / 11 / 1
Регистрация: 17.08.2012
Сообщений: 94
25.05.2016, 01:27     Не запускается java-приложение на Symbian 9.1 #9
Tavashi, а SDK какой используется? У меня "Java ME platform SDK 3.0.5". Тот, что идет с WTK, с новыми моделями телефонов может быть несовместим. Собственно, я его снес вместе с WTK.
А картинки можно просто заменить в архиве и проверить.

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

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

В эпоху динозавров. Разработка под Symbian S60 Java ME
Не получается запустить приложение windows из java программы Java ME
Java ME Java и микрокомпьютеры
Созданное в Eclipse jar-приложение не запускается на мобильном Java ME

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

Или воспользуйтесь поиском по форуму:
ВитаминКО
11 / 11 / 1
Регистрация: 17.08.2012
Сообщений: 94
26.05.2016, 14:45     Не запускается java-приложение на Symbian 9.1 #13
Tavashi, JAVA_HOME и т.п. проверь в виртуалке и на основной ОС.
Yandex
Объявления
26.05.2016, 14:45     Не запускается java-приложение на Symbian 9.1
Ответ Создать тему
Опции темы

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