Pergunta

Eu escrevi um MIDlet que faz várias coisas "avançadas":. Buscar imagens da web, redimensionando-los, salvá-los no telefone, exibindo-

Isso tudo funciona perfeitamente no emulador Nokia S60 3rd Edition FP1. Este dispositivo tem MIDP 2.0 e CLDC 1.1 suporte (também JSR75, o que eu preciso, a fim de salvar os arquivos). Ele também funciona como deveria no Nokia E71 (dispositivo físico).

Então eu tentei executar o MIDlet em vários outros emuladores. Um deles, o DefaultCldcJtwiPhone2 de Java ME SDK 3.0, também afirma MIDP 2.0 e 1.1 CLCA apoio. Ele não tem JSR75, o que explica por que "FileConnection não pode ser resolvido para um tipo".

Isto não significa, no entanto, explicar por que List.deleteAll (), String.equalsIgnoreCase (String) e alguns outros são indefinido.

Os erros reais que eu recebo:

  • O método ceil (duas vezes) não está definida para o tipo da matemática
  • O deleteAll método () é indefinido para o tipo List
  • O método equalsIgnoreCase (String) é indefinido para o tipo String
  • O método getWidth () é indefinido para o tipo visualizável

Quando eu olhar para o MIDP 2.0 (ou seja JSR118) API ( http: / /java.sun.com/javame/reference/apis/jsr118/ ), que pode ver claramente todos estes métodos de estar presente, com o "desde" tag sendo quer MIDP 2.0 ou CLCA 1.1.

Meu Pergunta : por que não um emulador com MIDP 2.0 Suporta têm acesso a todos os métodos de MIDP 2.0? Ou, alternativamente, o que estou fazendo de errado?

Foi útil?

Solução

Parece que você está usando métodos definidos em CLDC 1.1; o emulador que você está usando apenas deve suportar CLDC 1.0 (isso certamente explicaria a falta de equalsIgnoreCase() e qualquer coisa que envolva double e float primitivas). Veja a API completa aqui . E veja aqui para uma lista de diferenças entre 1.0 e 1.1.

EDIT: Algumas maneiras de verificar a versão CLDC do seu dispositivo:

1) Verifique a propriedade do sistema microedition.configuration como descrito aqui .

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

2) Verifique a existência de uma classe suportado apenas em 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");
}

Outras dicas

referências Eclipse tanto cldc_1.0.jar e cldc_1.1.jar (bem como midp_2.0.jar e midp_2.1.jar).

Para corrigi-lo: Ir para a Janela> Preferências> Java ME> Dispositivo Managment> seu dispositivo > Editar ...> Bibliotecas> cldc_1.0.jar> Remover

Mais detalhes você pode encontrar aqui: http://thompsonng.blogspot.com/2009/09/j2me-setting-eclipse-to-use-cldc-11.html

Mesmo depois de ter escolhido um dispositivo emulador que suporta CLDC-1.1, como DefaultCldcJtwiPhone2, você ainda pode configurá-lo para emular um único telefone CLDC-1.0.

Pelo menos é isso que as propriedades do projeto no Netbeans parecer.

Eu tenho o mesmo problema hoje (11/03/10) após a atualização a partir de: SDK 1.6.0_17 + eclipse ee 3.5.1 + Java_ME_platform_SDK_3.0 EA. para: SDK 1.6.0_18 + eclipse ee 3.5.2 + Java_ME_platform_SDK_3.0.

O método ceil (duas vezes) não está definida para o tipo da matemática O piso método (duas vezes) não está definida para o tipo da matemática O método abs (int) no tipo de matemática não é aplicável para os argumentos (duplo) O sqrt método (duplo) é indefinido para o tipo de matemática

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top