|
Java форум JavaTalks форум программистов
|
|
|
|
| Предыдущая тема :: Следующая тема |
| Автор |
Сообщение |
igar : 82 Новичок Откуда: Беларусь
|
Апр 23, 2007 22:39 |
|
|
Начал писать программку для мобилы в NetBeans - стал между 2х огней.
С одной стороны, если создавать по схеме: New Project -> CDC Application -> пишем код -> Run -> получаем *.jar, кторый на эмуляторе запускается, а в телефон закачиваем - не устанавливается.
Пошел по другому пути: взял код приложения, которое запускается на мобиле, создал *.java-файл, пытаюсь запустить на выполнение, ругается, что не может найти main classes. Помогите пожалуйста разобраться.
Вот код демки, которое на мобиле запускается:
| Код: |
import javax.microedition.lcdui.*;
import javax.microedition.midlet.MIDlet;
/**
* The calculator demo is a simple floating point calculator
* which powered by floating point support available in cldc1.1.
*
* @version
*/
public final class CalculatorMIDlet extends MIDlet implements CommandListener {
/** The number of characters in numeric text field. */
private static final int NUM_SIZE = 20;
/** Soft button for exiting the game. */
private final Command exitCmd = new Command("Exit", Command.EXIT, 2);
/** Menu item for changing game levels. */
private final Command calcCmd = new Command("Calc", Command.SCREEN, 1);
/** A text field to keep the first argument. */
private final TextField t1 = new TextField(null, "", NUM_SIZE, TextField.DECIMAL);
/** A text field to keep the second argument. */
private final TextField t2 = new TextField(null, "", NUM_SIZE, TextField.DECIMAL);
/** A text field to keep the result of calculation. */
private final TextField tr = new TextField("Result", "", NUM_SIZE, TextField.UNEDITABLE);
/** A choice group with available operations. */
private final ChoiceGroup cg =
new ChoiceGroup("", ChoiceGroup.POPUP,
new String[] { "add", "subtract", "multiply", "divide" }, null);
/** An alert to be reused for different errors. */
private final Alert alert = new Alert("Error", "", null, AlertType.ERROR);
/** Indicates if the application is initialized. */
private boolean isInitialized = false;
/**
* Creates the calculator view and action buttons.
*/
protected void startApp() {
if (isInitialized) {
return;
}
Form f = new Form("FP Calculator");
f.append(t1);
f.append(cg);
f.append(t2);
f.append(tr);
f.addCommand(exitCmd);
f.addCommand(calcCmd);
f.setCommandListener(this);
Display.getDisplay(this).setCurrent(f);
alert.addCommand(new Command("Back", Command.SCREEN, 1));
isInitialized = true;
}
/**
* Does nothing. Redefinition is required by MIDlet class.
*/
protected void destroyApp(boolean unconditional) {
}
/**
* Does nothing. Redefinition is required by MIDlet class.
*/
protected void pauseApp() {
}
/**
* Responds to commands issued on CalculatorForm.
*
* @param c command object source of action
* @param d screen object containing the item the action was performed on.
*/
public void commandAction(Command c, Displayable d) {
if (c == exitCmd) {
destroyApp(false);
notifyDestroyed();
return;
}
double res = 0.0;
try {
double n1 = getNumber(t1, "First");
double n2 = getNumber(t2, "Second");
switch (cg.getSelectedIndex()) {
case 0:
res = n1 + n2;
break;
case 1:
res = n1 - n2;
break;
case 2:
res = n1 * n2;
break;
case 3:
res = n1 / n2;
break;
default:
}
} catch (NumberFormatException e) {
return;
} catch (ArithmeticException e) {
alert.setString("Divide by zero.");
Display.getDisplay(this).setCurrent(alert);
return;
}
/*
* The resulted string may exceed the text max size.
* We need to correct last one then.
*/
String res_str = Double.toString(res);
if (res_str.length() > tr.getMaxSize()) {
tr.setMaxSize(res_str.length());
}
tr.setString(res_str);
}
/**
* Extracts the double number from text field.
*
* @param t the text field to be used.
* @param type the string with argument number.
* @throws NumberFormatException is case of wrong input.
*/
private double getNumber(TextField t, String type)
throws NumberFormatException {
String s = t.getString();
if (s.length() == 0) {
alert.setString("No " + type + " Argument");
Display.getDisplay(this).setCurrent(alert);
throw new NumberFormatException();
}
double n;
try {
n = Double.parseDouble(s);
} catch (NumberFormatException e) {
alert.setString(type + " argument is out of range.");
Display.getDisplay(this).setCurrent(alert);
throw e;
}
return n;
}
}
|
Спасибо. |
|
|
|
 |
gesser : 3589 JavaTalks Team Member
|
Апр 23, 2007 23:30 |
|
|
MIDLet`ы нужно запукать через эмулятор, они не являются полностью "самостоятельные" приложения (если говорить в смысле Desktop приложений).
Возможно Ваше приложение использует какие-то фичи, которые не поддерживает телефон (что частенько бывает). Возможно нужно скачать эмулятор для конкретной модели телефона, и попробовать запустить на нем. |
|
|
|
 |
igar : 82 Новичок Откуда: Беларусь
|
Апр 27, 2007 20:29 |
|
|
Вот самое простое приложение (CDC Application), созданное на основе
Main class:
| Код: |
package myfirst;
public class Main extends javax.swing.JFrame {
public Main() {
initComponents();
}
private void initComponents() {
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(0, 400, Short.MAX_VALUE)
);
layout.setVerticalGroup(
layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(0, 300, Short.MAX_VALUE)
);
pack();
}
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new Main().setVisible(true);
}
});
}
}
|
запускаем, получаем в папке прокта <dist> *.jar-файл, я так думал - что это тот файл кторый нужно устанавливать на мобилу, ан нет - не устанавливается.
Вопрос: как создать (самый простой код) *.jar, который бы запустился на мобиле? Заранее спасибо |
|
|
|
 |
gesser : 3589 JavaTalks Team Member
|
Апр 29, 2007 15:46 |
|
|
|
|
|
|
 |
igar : 82 Новичок Откуда: Беларусь
|
Апр 30, 2007 14:19 |
|
|
БОЛЬШОЕ СПАСИБО!
Скачал книгу Горнаков С.Г. "Программирование мобильных телефонов на Java2 ME (ссылка http://www.proklondike.com/file/Java/Gornakov_-_J2ME_Programming.rar), скачал Toolkit 2.5 for CLDC (toolkit скачал давно, но не знал как создать новый проект), книга супер, все, что хотел узнать - узнал. Советую всем!
P.S. На NetBeans (mobility pack) забил, теперь вообще не пойму, зачем он нужен? |
|
|
|
 |
-vertex- : 124 Новичок Откуда: Беларусь
|
Май 02, 2007 17:04 |
|
|
| igar писал(а): |
БОЛЬШОЕ СПАСИБО!
Скачал книгу Горнаков С.Г. "Программирование мобильных телефонов на Java2 ME (ссылка http://www.proklondike.com/file/Java/Gornakov_-_J2ME_Programming.rar), скачал Toolkit 2.5 for CLDC (toolkit скачал давно, но не знал как создать новый проект), книга супер, все, что хотел узнать - узнал. Советую всем!
P.S. На NetBeans (mobility pack) забил, теперь вообще не пойму, зачем он нужен? |
Скачал, только не понял чем "читать". Файл:
Горнаков С.Г. - Программирование мобильных телефонов на J2ME.djv |
|
|
|
 |
igar : 82 Новичок Откуда: Беларусь
|
Май 02, 2007 22:07 |
|
|
|
|
|
|
 |
-vertex- : 124 Новичок Откуда: Беларусь
|
Май 03, 2007 8:39 |
|
|
Спасибо! Открылась
Буду разбираться почему можно отказаться от мобилити пак. |
|
|
|
 |
-vertex- : 124 Новичок Откуда: Беларусь
|
Май 11, 2007 16:46 |
|
|
| igar писал(а): |
Вот самое простое приложение (CDC Application), созданное на основе
Main class:
| Код: |
package myfirst;
public class Main extends javax.swing.JFrame {
public Main() {
initComponents();
}
private void initComponents() {
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(0, 400, Short.MAX_VALUE)
);
layout.setVerticalGroup(
layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(0, 300, Short.MAX_VALUE)
);
pack();
}
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new Main().setVisible(true);
}
});
}
}
|
запускаем, получаем в папке прокта <dist> *.jar-файл, я так думал - что это тот файл кторый нужно устанавливать на мобилу, ан нет - не устанавливается.
Вопрос: как создать (самый простой код) *.jar, который бы запустился на мобиле? Заранее спасибо |
Во-первых как вы уже наверное поняли после прочтения книги этот код и не должен запускаться на мобиле так как это не midlet.
Во-вторых как я понял "Мобилити пак" для NetBeans это только надстройка для IDE для подключения J2ME платформы. Например я скачал этот пак и установил. Но им не пользуюсь. В смысле дефолтным инструментом. Я также скачал с СониЕриксона их пакет разработчика, подключил его его в NetBeans и пользуюсь им. Мне нравиться и я не собираюся от него отказываться.
З.Ы.: с книгой я ознакомился. В принципе ничего. Единственно было бы интерестнее если бы там было больше описаний технологии разработки игр а не описаний классов библиотеки J2ME, которые и так можно найти. |
|
|
|
 |
igar : 82 Новичок Откуда: Беларусь
|
Май 12, 2007 22:53 |
|
|
С первым утверждением полностью согласен, просто до прочтения книги я вообще не владел понятием мидлет
Второе: как я понял мобилити пак - это для CDC (возможно для КПК, не вникал), а для мобил нужно CLDC.
Можно поподробнее, как вы подключили пакет сонерика к NetBeans?
с З.Ы. тоже соглашусь, но согласитесь книга хороша для начинающих. |
|
|
|
 |
-vertex- : 124 Новичок Откуда: Беларусь
|
Май 14, 2007 9:11 |
|
|
| Цитата: |
| Можно поподробнее, как вы подключили пакет сонерика к NetBeans? |
Tools -> Java Platform Manager -> Add Platform -> Java Micro Edition Platform Emulator
Дальше ИДЕ находит платформу и вы просто выбираете ее
(если не ошибаюсь javascript:emoticon(' ')) |
|
|
|
 |
angel2100 : 2 Новичок
|
Окт 02, 2011 21:12 |
|
|
| igar писал(а): |
С одной стороны, если создавать по схеме: New Project -> CDC Application -> пишем код -> Run -> получаем *.jar, кторый на эмуляторе запускается, а в телефон закачиваем - не устанавливается.
|
а как с этим быть?
то есть я написал приложение в NetBeans, нормально запускаю на эмуляторе, но на телефоне не могу...  |
|
|
|
 |
|
|
Страница 1 из 1
|
Список форумов
-> Mobile Java |
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
|
|