MIDP 2.0 버전 문제 : $ 방법은 $ 유형에 대해 정의되지 않았습니다.
문제
나는 웹에서 이미지를 가져오고, 크기를 조정하고, 전화로 저장하고, 표시하는 몇 가지 "고급"일을하는 미드렛을 썼습니다.
이 모든 것은 Nokia S60 3rd Edition FP1 에뮬레이터에서 완벽하게 작동합니다. 이 장치에는 MIDP 2.0 및 CLDC 1.1 지원 (파일을 저장하기 위해 필요한 JSR75)이 있습니다. 또한 Nokia E71 (물리적 장치)에서도 작동합니다.
그런 다음 다른 여러 에뮬레이터에서 미드 렛을 실행하려고했습니다. 그 중 하나 인 Java ME SDK 3.0의 DefaultCldcjtwiphone2는 Midp 2.0 및 CLDC 1.1 지원을 주장합니다. JSR75가 없으므로 "파일 연결이 유형으로 해결 될 수없는 이유"를 설명합니다.
그러나 이것은 왜 list.deleteall (), string.equalsignorecase (string)와 다른 몇 가지가 정의되지 않은 이유를 설명하지 않습니다.
내가 얻는 실제 오류 :
- 메소드 CEIL (Double)은 수학 유형에 대해 정의되지 않았습니다.
- 방법 deleteall () 메소드는 유형 목록에 대해 정의되지 않았습니다.
- 이 메소드 equalsignorecase (String)는 String 유형에 대해 정의되지 않았습니다.
- getWidth () 메소드는 표시 가능한 유형에 대해 정의되지 않았습니다.
Midp 2.0 (예 : JSR118) API를 볼 때 (http://java.sun.com/javame/reference/apis/jsr118/), 나는이 모든 방법이 존재하는 것을 명확하게 볼 수 있으며, "이후"태그는 Midp 2.0 또는 CLDC 1.1입니다.
나의 의문: MIDP 2.0 지원이있는 에뮬레이터가 모든 MIDP 2.0 방법에 액세스 할 수없는 이유는 무엇입니까? 또는 또는 내가 무엇을 잘못하고 있습니까?
해결책
CLDC 1.1에 정의 된 메소드를 사용하는 것처럼 들립니다. 사용중인 에뮬레이터는 CLDC 1.0 만 지원해야합니다 (이것은 확실히 부족을 설명 할 것입니다. equalsIgnoreCase()
그리고 관련된 모든 것 double
그리고 float
기초 요소). 전체 API를 참조하십시오 여기. 그리고 봐라 여기 1.0과 1.1의 차이 목록.
편집 : 장치의 CLDC 버전을 확인하는 몇 가지 방법 :
1) 설명대로 Microedition.configuration 시스템 속성을 확인하십시오 여기.
System.out.println("The CLDC version is: " + System.getProperty("microedition.configuration"));
2) 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");
}
다른 팁
Eclipse는 CLDC_1.0.JAR 및 CLDC_1.1.jar (및 MIDP_2.0.JAR 및 MIDP_2.1.JAR)를 참조하십시오.
수정하려면 : 창으로 이동> 환경 설정> Java Me> 장치 관리> 당신의 장치 > 편집 ...> 라이브러리> CLDC_1.0.jar> 제거
자세한 내용은 여기에서 찾을 수 있습니다. http://thompsonng.blogspot.com/2009/09/j2me-esting-eclipse-to-us-cldc-11.html
DefaultCldcjtwiphone2와 같이 CLDC-1.1을 지원하는 에뮬레이터 장치를 선택한 후에도 CLDC-1.0 전용 전화를 모방하도록 구성 할 수 있습니다.
적어도 그것은 NetBeans의 프로젝트 속성이 어떻게 생겼는지입니다.
SDK 1.6.0_17 + ECLIPSE EE 3.5.1 + JAVA_ME_ME_PLATFORM_SDK_3.0 EA에서 업데이트 한 후 오늘도 같은 문제가 발생했습니다 (11/03/10). TO : SDK 1.6.0_18 + ECLIPSE EE 3.5.2 + JAVA_ME_PLATFORM_SDK_3.0.
메소드 CEIL (Double)은 수학 유형에 대해 정의되지 않은 방법으로 메소드 플로어 (Double)는 수학 유형에 대해 정의되지 않습니다. 유형 수학에 대한 정의되지 않았습니다