2010-12-13 2 views

답변

1

KeyCodeNumber 예외에는 확인 프로세스와 함께 할일이 있습니다. 당신은 자바 아카이브를 구축하여 시작한 경우

  1. 다음

    When developing Java applications for the BlackBerry smartphone, you may encounter any of the following verification errors or errors similar to the following:

    Verification Error 3141 Module 'MyMIDlet' has verification error (<###>) at offset <###>. Error starting MyMIDlet: Module 'MyMIDlet' has verification error (<####>) at offset <###>." These errors often occur when creating MIDlets. They are inherently hard to debug because the same error message can apply to a number of problems.

    을 방지하기 위해 가능한 솔루션 또는 정확한 확인 오류의 목록은 다음과 같습니다 검증 오류를 방지하는 방법을 설명

    블랙 베리 published an article (JAR) 파일을 생성 한 다음 RIM 응용 프로그램 컴파일러 (RAPC)을 사용하여 .cod 파일을 만든 경우일 때 에서 난독 처리를 해제하도록하십시오.JAR 파일을 작성하십시오. RAPC 컴파일러는 자체적으로 난독 화를 수행하며 코드가 이미 난독 화되면 문제가 발생할 수 있습니다.

  2. System.out. * 호출을 모두 제거하십시오. 이 은 일반적으로 BlackBerry 스마트 폰에서 아무 작업도 수행하지 않지만 은 확인 오류를 유발할 수 있습니다.
  3. 사용하지 않은 가져 오기 문을 제거하십시오.
  4. 각 함수 또는 변수에 대한 액세스를 명시 적으로 지정하십시오. 예에서는 이 public, private 또는 으로 지정되어 있는지 확인하십시오.
  5. MIDlet을 사용하는 경우 MIDlet 클래스가 public으로 선언 된 인지 확인하십시오.
  6. COD 파일이 손상되었거나 이 올바르게 서명되지 않은 경우 확인 오류가 발생할 수 있습니다. 을 새로 고치고 해당 응용 프로그램에 을 다시 사인하십시오. BlackBerry 스마트 폰에 응용 프로그램을 다시 설치하십시오.
  7. 실행 불가능한 코드를 주석 처리하십시오. 인증 오류는 주 코드 파일 및 라이브러리 파일의 크기와 관련이있을 수 있습니다. 이 비 실행 코드를 주석 처리하는 경우 파일 크기가 변경되므로 이 수정 될 수 있습니다.
  8. 이 RIM 클래스에서 상속하는 클래스를 만든 경우 해당 사용자 정의 메서드의 이름과 멤버를 클래스로 변경하십시오. 이렇게하면 은 내부 RIM 클래스에서 동일한 이름의 메소드 또는 구성원의 이름을 지정하지 않았 음을 확인합니다.
  9. 응용 프로그램이 사용하는 경우 BlackBerry® Device Software 3. 을 구현하는 응용 프로그램이 javax.microedition.rms.RecordStore 클래스가있는 BlackBerry® JAVA® 개발 환경 (블랙 베리 JDE) 이전의 버전 4.0을 사용하여 컴파일 할 때 8 나중에 확인 오류가 을 발생합니다. 응용 프로그램에서 addRecordListener 또는 removeRecordListener 메서드 중 하나를 RecordStore 클래스에 사용하는 경우에 발생합니다. 이 문제를 해결하려면 BlackBerry JDE 4.0 이상을 사용하여 응용 프로그램을 다시 컴파일하십시오.
  10. 는 은 BlackBerry® Java® 가상 머신 (블랙 베리 JVM)이 다른 클래스의 생성자 내에서 클래스를 직접 의 참조를 처리하는 방법에 문제가 있습니다. 다음은 예입니다 : Class1 class1 = new Class1 (Class2.class.getName());

는 다음 예에서와 같이 생성자 내에서 클래스를 호출하지 않는,이 문제를 해결하려면 :

Class1 class1; 
String className = Class2.class.getName(); 
Class1 = new Class1(className); 

는 내부 클래스에서 정적 인스턴스 변수에 대한 참조를 제거합니다. 예를 들어, 다음 코드 예제에서는 오류가 발생할 수 :

public class MyOuterClass { 
    static int var; 
    class MyInnerClass { 
     public void doSomething() { 
      var = 7; 
     } 
    } 
} 

같은 MyInnerClass을 끌어 논리를 외부 클래스에서 VAR에 대한 GET/set 메소드를 만들거나 수정할와 같이 이러한 참조를 제거 할 수있는 몇 가지 방법이 있습니다 MyOuterClass에서.

  1. 빌드 절차는 일반적으로 은 javac의 명령을 사용하여 자바 소스 파일 에서 컴파일 한 다음 실행 preverify.exe 파일 다음 RAPC. RAPC 이전 버전의 문제를 방지하기 위해 javac의에 다음 명령 줄을 인수를 추가

    javac.exe -target 1.1

  2. 매우 긴 어떤 방법을 1.3 -source 수 원인 확인 오류. 이러한 방법을 도우미 방법으로 나누면 확률 오류를 줄일 수 있습니다.

  3. 아마로하지 않지만, (10 개 이상의 파라미터)와 매우 긴있어서 정의 및 매우 긴 상수의 정의 (긴 패키지 구조 및/또는 긴 이름) 또한 인증 에러가 발생할 수있다.

+0

위대한 게시물이지만 모바일 개발자가 INSANE 인 이유입니다. – drubin

관련 문제