Обычная версия
Java форум JavaTalks
форум программистов

Поиск   Пользователи   Группы   Регистрация 
 Профиль   Личные сообщения 

 Вход 

Создание приложения в NetBeans
Список форумов
 ->  Mobile Java


 
Начать новую тему 
Предыдущая тема :: Следующая тема  
Автор Сообщение
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;
    }
}

Спасибо.
К началу Посмотреть профиль Отправить личное сообщение Отправить e-mail
gesser : 3589
JavaTalks Team Member

СообщениеАпр 23, 2007 23:30 
Ответить с цитатой
MIDLet`ы нужно запукать через эмулятор, они не являются полностью "самостоятельные" приложения (если говорить в смысле Desktop приложений).

Возможно Ваше приложение использует какие-то фичи, которые не поддерживает телефон (что частенько бывает). Возможно нужно скачать эмулятор для конкретной модели телефона, и попробовать запустить на нем.
К началу Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
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, который бы запустился на мобиле? Заранее спасибо
К началу Посмотреть профиль Отправить личное сообщение Отправить e-mail
gesser : 3589
JavaTalks Team Member

СообщениеАпр 29, 2007 15:46 
Ответить с цитатой
1. При разработке СDC приложений нужно избегать таких "тяжелых" пакетов как Swing.
2. Посмотрите примеры на странице http://developers.sun.com/techtopics/mobility/allsamples/ (особенно Getting started)
К началу Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
igar : 82
Новичок
Откуда: Беларусь

СообщениеАпр 30, 2007 14:19 
Ответить с цитатой
БОЛЬШОЕ СПАСИБО!

Скачал книгу Горнаков С.Г. "Программирование мобильных телефонов на Java2 ME (ссылка http://www.proklondike.com/file/Java/Gornakov_-_J2ME_Programming.rar), скачал Toolkit 2.5 for CLDC (toolkit скачал давно, но не знал как создать новый проект), книга супер, все, что хотел узнать - узнал. Советую всем! Wink

P.S. На NetBeans (mobility pack) забил, теперь вообще не пойму, зачем он нужен?
К началу Посмотреть профиль Отправить личное сообщение Отправить e-mail
-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 скачал давно, но не знал как создать новый проект), книга супер, все, что хотел узнать - узнал. Советую всем! Wink

P.S. На NetBeans (mobility pack) забил, теперь вообще не пойму, зачем он нужен?


Скачал, только не понял чем "читать". Файл:
Горнаков С.Г. - Программирование мобильных телефонов на J2ME.djv
К началу Посмотреть профиль Отправить личное сообщение
igar : 82
Новичок
Откуда: Беларусь

СообщениеМай 02, 2007 22:07 
Ответить с цитатой
Читалка файлов *.djv (*.djvu) DjVu Editor (Pro): http://www.download-zone.org/13405
Есть еще одна DjVu Solo 3.1, но она ругается при открытии этой книги. Very Happy
К началу Посмотреть профиль Отправить личное сообщение Отправить e-mail
-vertex- : 124
Новичок
Откуда: Беларусь

СообщениеМай 03, 2007 8:39 
Ответить с цитатой
Спасибо! Открылась Laughing
Буду разбираться почему можно отказаться от мобилити пак.
К началу Посмотреть профиль Отправить личное сообщение
-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 
Ответить с цитатой
С первым утверждением полностью согласен, просто до прочтения книги я вообще не владел понятием мидлет Smile

Второе: как я понял мобилити пак - это для CDC (возможно для КПК, не вникал), а для мобил нужно CLDC.
Можно поподробнее, как вы подключили пакет сонерика к NetBeans?

с З.Ы. тоже соглашусь, но согласитесь книга хороша для начинающих.
К началу Посмотреть профиль Отправить личное сообщение Отправить e-mail
-vertex- : 124
Новичок
Откуда: Беларусь

СообщениеМай 14, 2007 9:11 
Ответить с цитатой
Цитата:
Можно поподробнее, как вы подключили пакет сонерика к NetBeans?


Tools -> Java Platform Manager -> Add Platform -> Java Micro Edition Platform Emulator
Дальше ИДЕ находит платформу и вы просто выбираете ее
(если не ошибаюсь javascript:emoticon('Wink'))
К началу Посмотреть профиль Отправить личное сообщение
angel2100 : 2
Новичок

СообщениеОкт 02, 2011 21:12 
Ответить с цитатой
igar писал(а):


С одной стороны, если создавать по схеме: New Project -> CDC Application -> пишем код -> Run -> получаем *.jar, кторый на эмуляторе запускается, а в телефон закачиваем - не устанавливается.



а как с этим быть?
то есть я написал приложение в NetBeans, нормально запускаю на эмуляторе, но на телефоне не могу... Sad
К началу Посмотреть профиль Отправить личное сообщение
 
Начать новую тему  Ответить на тему
Страница 1 из 1
Список форумов
 -> Mobile Java


 
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Java and all Java-related trademarks and logos are trademarks or registered trademarks of Oracle Corporation in the United States and other countries.
Это сайт не относится к фирме Oracle Corporation и не поддерживается ею.

© 2006-2010 www.javatalks.ru: форум java программистов
Используется скрипт phpBB © 2001, 2010 phpBB Group

Хостинг от bizname.ru