Pregunta

He escrito un MIDlet que hace varias "opciones avanzadas" las cosas:obtención de imágenes de la web, cambiar el tamaño de ellos, guardarlos en el teléfono, de mostrarlos.

Todo esto funciona a la perfección en el Nokia S60 3rd Edition FP1 emulador.Este dispositivo cuenta con MIDP 2.0 y CLDC 1.1 apoyo (también JSR75, que necesito para guardar archivos).También funciona como debería en el Nokia E71 (dispositivo físico).

Luego traté de ejecutar el MIDlet en varios otros emuladores.Uno de ellos, el DefaultCldcJtwiPhone2 de Java ME SDK 3.0, también afirma MIDP 2.0 y CLDC 1.1 apoyo.No tiene JSR75, lo que explica por qué "FileConnection no puede ser resuelto a un tipo".

Esto no significa, sin embargo, explicar el por qué de la Lista.deleteAll(), String.equalsIgnoreCase(String), y algunos otros son indefinidos.

El real de los errores que tengo:

  • El método ceil(double) no está definido para el tipo de Matemáticas
  • El método deleteAll() está definido por el tipo de Lista
  • El método equalsIgnoreCase(String) no está definido para el tipo de Cadena
  • El método getWidth() está definido por el tipo de Visualizables

Cuando me miro en el MIDP 2.0 (es decir,JSR118) API (http://java.sun.com/javame/reference/apis/jsr118/), Que se puede ver claramente todos estos métodos de estar presente, con el "ya" de la etiqueta, ya sea MIDP 2.0 o CLDC 1.1.

Mi pregunta:¿por qué no un emulador con MIDP 2.0 de apoyo tienen acceso a todos los MIDP 2.0 métodos?O, alternativamente, ¿qué estoy haciendo mal?

¿Fue útil?

Solución

Parece que estás usando métodos definidos en CLDC 1.1; el emulador está utilizando solamente debe ser compatible con CLDC 1.0 (esto ciertamente explicaría la falta de equalsIgnoreCase() y cualquier cosa que implica double y float primitivas). Ver la API completa aquí . Y ver aquí para obtener una lista de las diferencias entre 1.0 y 1.1.

EDIT: Algunas formas de comprobar la versión de CLDC de su dispositivo:

1) Verificar la propiedad del sistema microedition.configuration como se describe aquí .

System.out.println("The CLDC version is:  " + System.getProperty("microedition.configuration"));

2) Comprobar la existencia de una clase apoyado sólo en 1.1.

try {
    Class.forName("java.lang.ref.WeakReference");
    System.out.println("It's CLDC 1.1");
} catch (ClassNotFoundException e) {
    System.out.println("It's CLDC 1.0");
}

Otros consejos

referencias Eclipse tanto cldc_1.0.jar y cldc_1.1.jar (así como midp_2.0.jar y midp_2.1.jar).

Para solucionarlo: Vaya a Ventana> Preferencias> Java ME> Gestión de dispositivos> su dispositivo > Editar ...> Bibliotecas> cldc_1.0.jar> Eliminar

Más detalles se pueden encontrar aquí: http://thompsonng.blogspot.com/2009/09/j2me-setting-eclipse-to-use-cldc-11.html

Incluso después de haber elegido un dispositivo emulador que soporta CLDC-1.1, como DefaultCldcJtwiPhone2, todavía puede configurarlo para emular un CLDC-1.0 sólo teléfono.

Al menos eso es lo que las propiedades del proyecto en Netbeans parecen.

Tengo el mismo problema hoy (11/03/10) después de actualizar a partir de:  SDK 1.6.0_17 + ee Eclipse 3.5.1 + Java_ME_platform_SDK_3.0 EA.  a:  SDK 1.6.0_18 + ee Eclipse 3.5.2 + Java_ME_platform_SDK_3.0.

El ceil método (doble) está definido para el tipo de Matemáticas El suelo método (doble) está definido para el tipo de Matemáticas El abs método (int) en el Math tipo no es aplicable para los argumentos (doble) El método sqrt (doble) está definido para el tipo de Matemáticas

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top