마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

NoClassDefFoundError

0 추천

NFC를 읽어오는 앱인데요...개발자콘솔의 다운 및 ANR에 오류가 아래와 같이 나왔습니다.

 

java.lang.NoClassDefFoundError: android.nfc.NfcAdapter
at Nfc_Reading.onCreate(Nfc_Reading.java:173)

.....

 

 

로그켓에서 출력한 문제의 구문은 아래와 같습니다..

(붉은색 부분이 로그켓에서 말하는 Nfc_Reading.java:173 부분입니다.)

 

 

 

  try {
   // NFC setting
   NfcAdapter mAdapter = NfcAdapter.getDefaultAdapter(this);
   if (!mAdapter.isEnabled()) {

    // NFC Setting UI
    AlertDialog.Builder ad = new AlertDialog.Builder(
      Nfc_Reading.this);
    ad.setTitle("NFC기능이 비활성화 상태입니다.");
    ad.setMessage("설정에서 NFC를 ON 해주세요.");
    ad.setPositiveButton("확인",
      new DialogInterface.OnClickListener() {
       public void onClick(DialogInterface dialog,
         int whichButton) {

        startActivity(new Intent(
          android.provider.Settings.ACTION_WIRELESS_SETTINGS));

       }
      });

    ad.create();
    ad.show();

   } else {

    if (Helper1.NotHelper == 0) {
     Intent myIntent = new Intent(getApplicationContext(),
       Helper1.class);
     startActivityForResult(myIntent, 1);
    }

   }
  } catch (Exception e) {
   if (BasicInfo.Starter == 0) {
    BasicInfo.Starter = 1;
    AlertDialog.Builder alert_confirm = new AlertDialog.Builder(
      Nfc_Reading.this);
    alert_confirm.setTitle("죄송합니다.");
    alert_confirm
      .setMessage(
        "본 기기는 NFC기능을\n지원하지 않습니다.\n태그조회를 하기 위해서는\nNFC를 지원해야합니다.")
      .setCancelable(false)
      .setPositiveButton("확인",
        new DialogInterface.OnClickListener() {
         @Override
         public void onClick(DialogInterface dialog,
           int which) {

         }
        });

    AlertDialog alert = alert_confirm.create();
    alert.show();
   } else {

   }
  }

 

 

 

제가 이해되지 않는 부분은...

try/catch로 감싼 부분인데 왜 앱이 다운되는지가 궁금합니다...답변 감사드립니다..^^

 

AndroidPark (900 포인트) 님이 2013년 8월 29일 질문

2개의 답변

+1 추천
try catch는 예외(Exception)를 처리한 부분이고

발생한 것은 오류(Error)입니다.
Elex (9,090 포인트) 님이 2013년 8월 29일 답변
답변 감사합니다!

위의 구문은 NFC지원여부를 확인하기 위한 구문인데
오류(Error)로 처리되었다면..NFC를 지원하지 않는것으로
판단하고 catch(Error e) 로 정의해서 처리해도 되는걸까요?
+1 추천

NoClassDefFoundError 는 try catch 로 감싸서 처리할 수 없을 겁니다.

OS 버전값을 보고 분기하는 식으로 구현해야 합니다.

익명사용자 님이 2013년 8월 29일 답변
그렇다면.. Nfc 지원 API Level이 9부터인데...
NFC를 지원하지 않는 9 이상의 단말기는 어떻게되는거죠??
API Level을 만족하면 NoClassDefFoundError가 나오지않을까요?..
...