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

Java ME (J2ME)

Войти
Регистрация
Восстановить пароль
 
ВитаминКО
11 / 11 / 1
Регистрация: 17.08.2012
Сообщений: 97
#1

Java ME (Embedded) | Запуск мидлетов в CVM - Java ME

24.11.2015, 06:15. Просмотров 925. Ответов 9

В общем, решил повозиться с запуском мидлетов на родной JVM, а не через эмуляторы. Все это происходит на системе Maemo 5. Процессор ARM, собственно, и JVM у меня Embedded.

Написал bash для запуска, поправил как смог появляющиеся ошибки:
а) распаковал сам мидлет, чтобы CVM нашла главный класс
б) так же распаковал библиотеки профилей CLDC и MIDP из Java ME SDK, т.к. через ключи -ср и -Djava.library.path не получилось

Теперь в консоли пишет следующее:
Bash
1
2
3
4
java.lang.NoSuchMethodException: main
      at java.lang.Class.getmethod0 (Native Method)
      at java.lang.Class.getmethod (Unknown Source)
      at sun.misc.CVM.runMain (Unknown Source)
Кто разбирается в работе JVM - объясните пожалуйста, с чем связана такая ошибка и как ее можно исправить?
И по пункту (б) - можно ли все-таки подключать те библиотеки через ключи или так и оставить?

И как можно сконфигурировать CVM так, чтобы не приходилось распаковывать? На смартфонах с Symbian под каждый мидлет создавалась папка, туда копировался мидлет (т.е. устанавливался) и заводилась папка под записи RMS. Хочется чего-то подобного.

Версия CVM:
Bash
1
2
3
4
Product version "Oracle Java Micro Edition Embedded Client 1.1.1"
*Java(TM) ME CDC 1.1.2 Runtime Environment (build 1.1.1-b02)*
Components: CDC JSR218, FP JSR219, JAAS JSR219, JCE JSR219, JSSE JSR219, RMI JSR66, JDBC JSR169, XML JSR280
JVM: CVM (mixed mode)
А то, может, дело в самой версии CVM и мне надо вовсе другую запускать?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.11.2015, 06:15
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Java ME (Embedded) | Запуск мидлетов в CVM (Java ME):

Запуск Java приложений - Java
Доброго времени суток! Возник такой вопрос: А какие способы есть для запуска Java приложений? Вот например для C/C++ и тому подобное...

запуск java приложения - Java
подскажите как запустить java приложение с интерфейсом как exe программу , код пишу в нетбин

Запуск внешних приложений в Java - Java
У меня вопрос: можно ли в Java открывать инородные программы, как в system("PATH"); желательно с выводом в окно, как в окно консоли:...

Запуск java rmi системы - Java
Всем привет) Только разбираюсь с rmi и решила запустить простой пример с выводом "Hello World". Но у меня не получается. Опишу все...

Запуск сервера на языке Java - Java
Добрый вечер, у меня есть сервер для защищенного обмена сообщениями который состоит из 2 файлов java. Не могу разобраться с помощью чего...

Запуск java через прокси - Java
Как запустить java программу через прокси на пк. Запуск идет из bat файла. Что там нужно прописать?Заранее благодарю

9
ВитаминКО
11 / 11 / 1
Регистрация: 17.08.2012
Сообщений: 97
25.11.2015, 17:15  [ТС] #2
Интересует любая информация
0
Tavashi
1 / 1 / 0
Регистрация: 21.05.2016
Сообщений: 10
21.05.2016, 14:56 #3
Что вы имеете ввиду под "запуском мидлетов на родной JVM"?
0
ВитаминКО
11 / 11 / 1
Регистрация: 17.08.2012
Сообщений: 97
22.05.2016, 16:23  [ТС] #4
Tavashi, такой же запуск, как в обычных мобильных телефонах. К примеру - Nokia 7500.
На оригинальной вряд ли получится, т.к. вроде эти JVM лицензируются для разработчиков. Но есть свободная CVM от Oracle для Embedded устройств, которую я и использовал.

По теме: та ошибка, скорее всего, из-за отсутствия реализации классов, скорее всего оберток. Ибо не получилось запустить что-то даже с классами из комплекта SDK (разные jsr). Т.е., мидлет просто не получается загрузить.

Но есть модификация от сторонних разработчиков - PhoneME. Там, если я правильно понимаю, реализацию классов написали. В общем плане, большинство приложений работает. Но там встречаются другие проблемы, особенно с играми - ресурсы не загружаются и т.д.. Поэтому я хотел на "оригинальной" JVM запустить с либами из SDK.
0
Tavashi
1 / 1 / 0
Регистрация: 21.05.2016
Сообщений: 10
23.05.2016, 10:46 #5
ВитаминКО, если позволите, то давайте попробуем побрэйнстормить
оффтоп?

не через эмуляторы
Эмуляторы реализуют какие-то классы и зависимости, а уж потом идет вызов класса-мидлета. На сколько я понимаю, совсем уж без эмуляторов не удастся запустить.

а) распаковал сам мидлет, чтобы CVM нашла главный класс
Нашла главный класс где? В мидлете? Мидлет класс наследник и/или реализатор, но никак не main.

Итого: как мне это видится, то нельзя просто так запустить мидлет, даже с распакованными либами. Нужно понять, что делает эмулятор при запуске, т.е. какие классы или зависимости реализует. А потом при запуске на родной jvm сделать это самому вручную, только вот разницы с эмулятором не будет, разве что будет свой "как бы эмулятор".
0
ВитаминКО
11 / 11 / 1
Регистрация: 17.08.2012
Сообщений: 97
23.05.2016, 21:49  [ТС] #6
Tavashi, в общем, я хотел запускать мидлеты на этой cvm так же, как десктопные приложения запускаются на jvm.
Цитата Сообщение от Tavashi Посмотреть сообщение
совсем уж без эмуляторов не удастся запустить.
Не удастся, если я попытаюсь сделать это на Java SE VM. Это очевидно. Но есть Java ME VM, которая используется в мобильниках. И которую я развернул на Maemo. Один товарищ хотел так же развернуть на Raspberry Pi.

Для Maemo и прочих систем, где нет по-умолчанию поддержки мидлетов (j2me), написали свою реализацию (форк от оракловской) и обозвали это phoneME. Сайт разработчика: http://davy.preuveneers.be/phoneme/?q=node/34

В общем, от первоначальной идеи отказался, слишком хлопотно и времязатратно. Думаю, проще будет доделать костыли к phoneME, чтобы не только приложения, но и игры можно было запускать без проблем (не получается загрузить какой-то ресурс, вроде мелодии или спрайта). Скорее всего, закинуть недостающие API и повозиться с ключами запуска.

Пока что просто, с помощью стороннего GUI "устанавливаю" мидлеты. Буду пробовать делать это по инструкции с офсайта.
0
Tavashi
1 / 1 / 0
Регистрация: 21.05.2016
Сообщений: 10
24.05.2016, 00:01 #7
ВитаминКО,
Я вот только не понял для чего нужно было распаковывать мидлет и какой главный класс там должна была найти cvm ... ну да ладно. Раз уж мы говорим о мидлетах, вы не посмотрите мой вопрос в теме? Застрял на этом этапе, нагуглить что-то путного пока что не удалось.
0
ВитаминКО
11 / 11 / 1
Регистрация: 17.08.2012
Сообщений: 97
24.05.2016, 00:42  [ТС] #8
Tavashi, там просто не получалось, как на ПК, прописать java -jar filename.jar
cvm не находила главный класс мидлета. cvm - это как java.exe, бинарник виртуальной машины (расширения нет, т.к. Maemo линуксовая ОС).
0
Tavashi
1 / 1 / 0
Регистрация: 21.05.2016
Сообщений: 10
25.05.2016, 00:15 #9
ВитаминКО,
Наверное я понимаю как-то иначе, но что вы имеете ввиду под главным классом мидлета? В консоли ошибка на отсутствие метода main, который вызывается сам как часть реализации MIDP-профайла. А мидлет это приложение, которое использует MIDP-профайл. Ну т.е. main - он сам по себе.
0
ВитаминКО
11 / 11 / 1
Регистрация: 17.08.2012
Сообщений: 97
25.05.2016, 00:29  [ТС] #10
Tavashi, то, что MIDP составляющую не может найти, я позже понял и написал тут: Java ME (Embedded) | Запуск мидлетов в CVM
Раньше я малость затупил и не обратил внимания, что в этой версии нет MIDP и CLDC. Собственно, существующие реализации прописаны:
Код
Components: CDC JSR218, FP JSR219, JAAS JSR219, JCE JSR219, JSSE JSR219, RMI JSR66, JDBC JSR169, XML JSR280
А главный класс мидлета - это тот, с которого начинается выполнение мидлета
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.05.2016, 00:29
Привет! Вот еще темы с ответами:

Запуск команд Линукса на java - Java
как это реализовать? например запускать ls -la и считывать вывод этой команды

Запуск программы на Java (ошибка) - Java
Здравствуйте. Понимаю что эта тема изъезженна вдоль и поперек, но я что-то врубиться никак не могу В среде NetBions получил я допустим...

Запуск команд Linux с Java приложений. - Java
Ja xotel b@ uznat. Mogu li ja s java programm@ zapuskat komand@ Linuxa. Naprimer mogu li ja zapuskat komandu 'meminfo', ili 'pwd',...

Запуск внешней программы с java приложения. - Java
Возможно ли запустить из java приложения, например, фотошоп? Как?


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

Или воспользуйтесь поиском по форуму:
10
Yandex
Объявления
25.05.2016, 00:29
Ответ Создать тему
Опции темы

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