Модераторы: javastic, AntonSaburov

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ошибка при переносе мидлета на телефон 
V
    Опции темы
Brodyaga
Дата 28.2.2008, 13:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 599
Регистрация: 19.1.2008

Репутация: 2
Всего: 2



Всем добрый день! Создаю простой мидлет в WTK 2.5.1 следующего кода...
Код

import javax.microedition.lcdui.*;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;

import com.sun.midp.io.j2me.storage.File;

public class MainMidlet extends MIDlet
{
    private Form myform;
    
    private Display mydisplay;+
    
    public MainMidlet() 
    {
        mydisplay=Display.getDisplay(this);
    }

    protected void destroyApp(boolean arg0)
    {
    }

    protected void pauseApp() 
    {
    }

    protected void startApp() throws MIDletStateChangeException 
    {
        myform.append(String.valueOf(File.getStorageRoot()));
        myform.append("test!");
        
        mydisplay.setCurrent(myform);
    }
}


В WTK 2.5.1 ставлю в настройках проекта конфигурацию CLDC 1.0 и профиль MIDP 1.0.
Запускаю приложение... На эмуляторе всё работает. Но после запуска мидлета на телефоне, выдаётся следующая ошибка:
Unrecoverable error in MIDlet.startApp() java.lang.NoClassDefFoundError:
com/sun/midp/io/j2me/storage/File

Не пойму почему он не может найти этот класс, поддерживаемый профилем MIDP 1.0.
Аппарат у меня Siemens CX75(CLDS 1.1 , MIDP 2.0)

Помогите разобраца...
PM MAIL   Вверх
hamsterKSU
Дата 28.2.2008, 13:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 401
Регистрация: 20.10.2006
Где: Украина, Херсон

Репутация: 7
Всего: 11



вот этого import com.sun.midp.io.j2me.storage.File; на телефонах точно нет

Добавлено @ 13:53
что бы получить доступ к файловой системе телефон должен держать JSR 75

Это сообщение отредактировал(а) hamsterKSU - 28.2.2008, 13:53
PM MAIL ICQ   Вверх
Brodyaga
Дата 28.2.2008, 14:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 599
Регистрация: 19.1.2008

Репутация: 2
Всего: 2



а что такое JSR и где про него подробнее можно прочитать?! Можете посоветовать какуюнить хорошую статью?

И ещё... изменил код:
Код

import java.io.IOException;
import javax.microedition.lcdui.*;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;
import javax.microedition.io.Connector;
import javax.microedition.io.file.FileConnection;

public class MainMidlet extends MIDlet implements CommandListener
{
    private Form myform;
    
    private Display mydisplay;
    
    private long size;
    
    public MainMidlet() 
    {
        mydisplay=Display.getDisplay(this);
    }

    protected void destroyApp(boolean arg0)
    {
    }

    protected void pauseApp() 
    {
    }

    protected void startApp() throws MIDletStateChangeException 
    {
        try
        {
            FileConnection f=(FileConnection)Connector.open("file:///SDCard/text.txt");
            size=f.availableSize();
        }
        catch(IOException e)
        {
        }

        myform.append(String.valueOf(size));

        myform.append("test!");
        
        mydisplay.setCurrent(myform);
    }
}


и поставил в настройках WTK 2.5.1 поддержку JSR 75, но теперь не запускается даже на WTK... 
вот что говорит
Building "ProjectOzfDecoder"
C:\WTK2.5.1\apps\Project\src\MainMidlet.java:38: cannot find symbol
symbol  : class FileConnection
location: class MainMidlet
            FileConnection f=(FileConnection)Connector.open("file:///SDCard/text.txt");
                        ^
C:\WTK2.5.1\apps\Project\src\MainMidlet.java:38: cannot find symbol
symbol  : class FileConnection
location: class MainMidlet
            FileConnection f=(FileConnection)Connector.open("file:///SDCard/text.txt");
                                          ^
C:\WTK2.5.1\apps\Project\src\MainMidlet.java:38: cannot find symbol
symbol  : variable Connector
location: class MainMidlet
            FileConnection f=(FileConnection)Connector.open("file:///SDCard/text.txt");
                                                         ^
3 errors
com.sun.kvem.ktools.ExecutionException
Build failed

В чём дело?
PM MAIL   Вверх
eugine_s
Дата 28.2.2008, 15:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 581
Регистрация: 14.11.2007
Где: Киев

Репутация: 17
Всего: 17



Цитата(Brodyaga @  28.2.2008,  14:38 Найти цитируемый пост)
и поставил в настройках WTK 2.5.1 поддержку JSR 75,

А что значит ты поставил в настройках поддержку JSR-75?

Settings - Api Selection - (галочка) PDA Profile for J2ME (JSR 75) так ?

Потому как в ошибке у тебя говорится, что этого класса как раз и нет у тебя. Кстати в втк есть пример работы с jsr75 - PDAPDemo
PM MAIL   Вверх
Brodyaga
Дата 28.2.2008, 15:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 599
Регистрация: 19.1.2008

Репутация: 2
Всего: 2



Цитата

А что значит ты поставил в настройках поддержку JSR-75?

Settings - Api Selection - (галочка) PDA Profile for J2ME (JSR 75) так ?

да так..

Как нету класса? Он находица в библиотеке jsr75.jar, а она в свою очередь располагаеца в папке \WTK2.5.1\lib. Или его надо както по особому подключить?
PM MAIL   Вверх
eugine_s
Дата 28.2.2008, 15:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 581
Регистрация: 14.11.2007
Где: Киев

Репутация: 17
Всего: 17



Brodyaga, ошибся, не класса нет, а библиотеки нет... т.е. у тебя библиотека jsr75 почему-то не подключена к проекту... 
Попробуй ручками скомпилить проект с подключением этой библиотеки, ну или загрузи проект PDAPDemo посмотри он работает или нет..
PM MAIL   Вверх
Brodyaga
Дата 28.2.2008, 15:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 599
Регистрация: 19.1.2008

Репутация: 2
Всего: 2



Всё! Сделал! На WTK всё действително работает... Но на телефоне он не может найти этот класс... Таже ошибка которую я приводил в первом сообщении. Что получается, если телефон не поддерживает jsr75, то он не может работать с файлами?!? Получается Siemens CX75 не может работать с файлами? Телефон вроде не старый... Как быть?
PM MAIL   Вверх
eugine_s
Дата 28.2.2008, 15:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 581
Регистрация: 14.11.2007
Где: Киев

Репутация: 17
Всего: 17



На Сименсе есть свое апи для работы с ФС.

com.siemens.mp.io.File

А если JSR75-го нет, то java с ФС не работает.

PM MAIL   Вверх
Brodyaga
Дата 28.2.2008, 16:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 599
Регистрация: 19.1.2008

Репутация: 2
Всего: 2



А если мне нужна программа работающая на большинстве телефонов с обращением к какомунибудь файлу с флэшки и я буду использовать jsr75, то на всех сименсах она работать не будет, так как у них своё API для этого? И много ли телефонов с поддержкой jsr75?
PM MAIL   Вверх
eugine_s
Дата 28.2.2008, 16:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 581
Регистрация: 14.11.2007
Где: Киев

Репутация: 17
Всего: 17



Цитата(Brodyaga @  28.2.2008,  16:21 Найти цитируемый пост)
то на всех сименсах она работать не будет


На тех только у кого есть JSR75


Цитата(Brodyaga @  28.2.2008,  16:21 Найти цитируемый пост)
И много ли телефонов с поддержкой jsr75? 


Уже много.


Цитата(Brodyaga @  28.2.2008,  16:21 Найти цитируемый пост)
так как у них своё API для этого


Да, было свое АПИ, но сейчас у них ... а сложно сказать, так как Сименс Мобайл уже как таковой нет. Сименс продал уже давно свой отдел мобильный benq, а они в свою очередь год (может два) назад заявили что их контора убыточна и мобильный или будет банкротом или кому-то продадут... про дальнейшую судьбы не знаю.

Так что я на твоем месте особо с сименсом не замарачивался.

А вобще работа с ФС - это часто бывает проблемной областью, поэтому я бы как минимум тестировал на всех телефонах из списка совместимости(возможно для каждого телефона была бы своя портация).
PM MAIL   Вверх
Brodyaga
Дата 29.2.2008, 07:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 599
Регистрация: 19.1.2008

Репутация: 2
Всего: 2



Да я и не заморачивась с сименсом, просто у меня сименс smile и приходица проверять на нём... А что значит для каждого своя портация? Какое то особое использование библиотек jsr75? Или так же как и у сименса - свои классы?
В какой библиотеке лежит этот сименсовый com.siemens.mp.io.File?

Это сообщение отредактировал(а) Brodyaga - 29.2.2008, 08:11
PM MAIL   Вверх
Shurik16
Дата 29.2.2008, 08:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 20.4.2007
Где: г.Хабаровкс

Репутация: 1
Всего: 1



Портирование Ссылка 

В NetBeans я примерно так портирую Ссылка

В настроиках проекта в атрибутах прописываеш Mode Siemens и Когда компилится проект Содиржимое Которое не поподаетпод условие //#if Mode == "Siemens" не проходит компиляцию

  
Код

import javax.microedition.lcdui.*;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;

//#if Mode == "Siemens"
import com.siemens.mp.io.File
//#endif
//#if Mode == "Sun"
import com.sun.midp.io.j2me.storage.File;
//#endif
 ......


PM MAIL ICQ Skype   Вверх
Brodyaga
Дата 29.2.2008, 08:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 599
Регистрация: 19.1.2008

Репутация: 2
Всего: 2



Дайте плиз ссылку на библиотеку с сименсовым классом File... Или может  у кого есть?
PM MAIL   Вверх
eugine_s
Дата 29.2.2008, 15:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 581
Регистрация: 14.11.2007
Где: Киев

Репутация: 17
Всего: 17



Цитата(Brodyaga @  29.2.2008,  08:52 Найти цитируемый пост)
Или может  у кого есть? 


Выложил вот тут

Дока по File


PM MAIL   Вверх
Brodyaga
Дата 29.2.2008, 15:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 599
Регистрация: 19.1.2008

Репутация: 2
Всего: 2



Спасибо!
PM MAIL   Вверх
Brodyaga
Дата 4.3.2008, 08:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 599
Регистрация: 19.1.2008

Репутация: 2
Всего: 2



При подключении данной вами сименсовской библиотеки WTK выдаёт ошибку следующего содержания:
Error: native methods should not appear
Error preverifying class com.siemens.mp.game.ExtendedImage

А Eclipse при подключении библиотеки компилица, но при создании объекта класса файл выдаёт:
java.lang.NoClassDefFoundError: com/siemens/mp/io/File
    at RastrMapManager.<init>(+11)
    at MainMidlet.startApp(+22)
    at javax.microedition.midlet.MIDletProxy.startApp(+7)
    at com.sun.midp.midlet.Scheduler.schedule(+270)
    at com.sun.midp.main.Main.runLocalClass(+28)
    at com.sun.midp.main.Main.main(+116)
Execution completed.

В чём дело? У вас есть другая библиотека для сименса?
PM MAIL   Вверх
eugine_s
Дата 4.3.2008, 13:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 581
Регистрация: 14.11.2007
Где: Киев

Репутация: 17
Всего: 17



Цитата(Brodyaga @  4.3.2008,  08:05 Найти цитируемый пост)
При подключении данной вами сименсовской библиотеки WTK выдаёт ошибку следующего содержания:
Error: native methods should not appear
Error preverifying class com.siemens.mp.game.ExtendedImage


Читаем, что такое native метод и потом даем ответ почему втк НЕ должен работать с этой библиотекой.


Цитата(Brodyaga @  4.3.2008,  08:05 Найти цитируемый пост)
В чём дело? У вас есть другая библиотека для сименса? 

Дело в твоем не понимании зачем тебе нужна библиотека сименса...

На самом деле библиотека сименса может не содержать реализацию метод - могу быть только объявление методов и поля (без реализации).
Иногда такое называется заглушкой - чтобы можно было скомпилировать проект, а потом сбросить на телефон и там уже смотреть на работоспособность приложения...

Разбирайся, я тебе дал все что тебе нужно для того чтобы сделать твое задание (а именно работа с ФС на Сименсе).


PM MAIL   Вверх
Stasilok
Дата 20.3.2008, 03:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 20.3.2008

Репутация: нет
Всего: нет



Короче убиваешь к чертям эту библиотеку, где: com/siemens/mp/io/File !!!
А теперь обьясняю, во всей 65-75-85(SGold NEWSGOld) серии сименсов присутствует JSR75, но лежит он никак обычно по адресу javax.microedition.io.file , а по даресу 
com.siemens.mp.io.file
содержимое и принцип работы идентичен!!
Т.е. тупо копируете библиоткеку JSR75.jar например в JSR75sie.jar и внутри заменяете пути, переименовывая папки и получаете сименсовскую апи для работы с ф.с.
и всё, теперь при написании мидлета, делаете импорт com.siemens.mp.io.file.FileConnection и com.siemens.mp.io.file.FileSystemRegistry
и радуетесь.. т.е. можете сделать 2 отдельные версии мидлета, установив условия для компиляции, хотя всё можно и в одном мидлете собрать..
PM MAIL   Вверх
Brodyaga
Дата 20.3.2008, 07:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 599
Регистрация: 19.1.2008

Репутация: 2
Всего: 2



Тоесть классы остаются теже? Просто меняем название библиотеки и пакеты внутри неё.. помещаем её в системные.. подключаем, работаем... скидываем на телефон, и там он найдёт по тому же пути? Но зачем два мидлета я не понял?

Это сообщение отредактировал(а) Brodyaga - 20.3.2008, 07:35
PM MAIL   Вверх
eugine_s
Дата 20.3.2008, 10:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 581
Регистрация: 14.11.2007
Где: Киев

Репутация: 17
Всего: 17



Цитата(Brodyaga @  20.3.2008,  07:33 Найти цитируемый пост)
Но зачем два мидлета я не понял?

Два: один использует javax.microedition.io.file,*;  второй com.siemens.mp.io.file.*;


Цитата(Stasilok @  20.3.2008,  03:56 Найти цитируемый пост)
отя всё можно и в одном мидлете собрать.. 

можно и в одном, но не факт что везде запуститься (везде имеется ввиду где есть один из пакетов javax.... или com.siemens...).

Поэтому лучше две версии делать.
PM MAIL   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса

  • Прежде чем задать вопрос прочтите это!
  • Литература по Java находится здесь.
  • Литературу по Java обсуждаем здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда

  • FAQ раздела лежит здесь!
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java ME (J2ME) | Следующая тема »


 




[ Время генерации скрипта: 0.1006 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.