【问题标题】:NoClassDefFoundError with PDFViewerPDFViewer 的 NoClassDefFoundError
【发布时间】:2012-06-28 08:15:24
【问题描述】:

我正在尝试实现一个 pdf 查看器,该应用程序会检测存储在 sd 卡中的 PDF,如图所示。 http://img225.imageshack.us/img225/3852/pdfs.png

但是当我点击任何文件查看它时...错误。

这是 LOGCAT:

06-28 07:32:46.963: WARN/dalvikvm(330): Unable to resolve superclass of Lcom/example/trypdf/Second; (496)
06-28 07:32:46.983: WARN/dalvikvm(330): Link of class 'Lcom/example/trypdf/Second;' failed
06-28 07:32:46.983: ERROR/dalvikvm(330): Could not find class 'com.example.trypdf.Second', referenced from method com.example.trypdf.PDFViewerActivity.openPdfIntent
06-28 07:32:47.013: WARN/dalvikvm(330): VFY: unable to resolve const-class 419 (Lcom/example/trypdf/Second;) in Lcom/example/trypdf/PDFViewerActivity;
06-28 07:32:47.013: DEBUG/dalvikvm(330): VFY: replacing opcode 0x1c at 0x0002
06-28 07:32:47.013: DEBUG/dalvikvm(330): VFY: dead code 0x0004-000e in Lcom/example/trypdf/PDFViewerActivity;.openPdfIntent (Ljava/lang/String;)V
06-28 07:32:47.373: INFO/ActivityManager(59): Displayed activity com.example.trypdf/.PDFViewerActivity: 1665 ms (total 1665 ms)
06-28 07:32:52.593: DEBUG/dalvikvm(131): GC_EXPLICIT freed 1336 objects / 74064 bytes in 149ms
06-28 07:33:28.634: DEBUG/SntpClient(59): request time failed: java.net.SocketException: Address family not supported by protocol
06-28 07:33:55.655: DEBUG/AndroidRuntime(330): Shutting down VM
06-28 07:33:55.663: WARN/dalvikvm(330): threadid=1: thread exiting with uncaught exception (group=0x4001d800)
06-28 07:33:55.684: ERROR/AndroidRuntime(330): FATAL EXCEPTION: main
06-28 07:33:55.684: ERROR/AndroidRuntime(330): java.lang.NoClassDefFoundError: com.example.trypdf.Second
06-28 07:33:55.684: ERROR/AndroidRuntime(330):     at com.example.trypdf.PDFViewerActivity.openPdfIntent(PDFViewerActivity.java:46)
06-28 07:33:55.684: ERROR/AndroidRuntime(330):     at com.example.trypdf.PDFViewerActivity.onListItemClick(PDFViewerActivity.java:41)
06-28 07:33:55.684: ERROR/AndroidRuntime(330):     at android.app.ListActivity$2.onItemClick(ListActivity.java:321)
06-28 07:33:55.684: ERROR/AndroidRuntime(330):     at android.widget.AdapterView.performItemClick(AdapterView.java:284)
06-28 07:33:55.684: ERROR/AndroidRuntime(330):     at android.widget.ListView.performItemClick(ListView.java:3382)
06-28 07:33:55.684: ERROR/AndroidRuntime(330):     at android.widget.AbsListView$PerformClick.run(AbsListView.java:1696)
06-28 07:33:55.684: ERROR/AndroidRuntime(330):     at android.os.Handler.handleCallback(Handler.java:587)
06-28 07:33:55.684: ERROR/AndroidRuntime(330):     at android.os.Handler.dispatchMessage(Handler.java:92)
06-28 07:33:55.684: ERROR/AndroidRuntime(330):     at android.os.Looper.loop(Looper.java:123)
06-28 07:33:55.684: ERROR/AndroidRuntime(330):     at android.app.ActivityThread.main(ActivityThread.java:4627)
06-28 07:33:55.684: ERROR/AndroidRuntime(330):     at java.lang.reflect.Method.invokeNative(Native Method)
06-28 07:33:55.684: ERROR/AndroidRuntime(330):     at java.lang.reflect.Method.invoke(Method.java:521)
06-28 07:33:55.684: ERROR/AndroidRuntime(330):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
06-28 07:33:55.684: ERROR/AndroidRuntime(330):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
06-28 07:33:55.684: ERROR/AndroidRuntime(330):     at dalvik.system.NativeStart.main(Native Method)
06-28 07:33:55.693: WARN/ActivityManager(59):   Force finishing activity com.example.trypdf/.PDFViewerActivity
06-28 07:33:56.213: WARN/ActivityManager(59): Activity pause timeout for HistoryRecord{44fe47a0 com.example.trypdf/.PDFViewerActivity}

我几乎什么都试过了:

  • 创建一个新项目并复制类。
  • 使用其他目标 (APIS lvl10),(2.2,_lvl8)。
  • 清理和构建
  • 重置 ADB。
  • 使用从其他站点下载的 PDFViewer 库。

但我总是得到同样的错误:

06-28 07:32:46.983: ERROR/dalvikvm(330): Could not find class 'com.example.trypdf.Second', referenced from method com.example.trypdf.PDFViewerActivity.openPdfIntent
06-28 07:33:55.684: ERROR/AndroidRuntime(330): java.lang.NoClassDefFoundError: com.example.trypdf.Second

在这里你还可以看到我的两个类,以及 MANIFEST。

PDFViewerActivity.java

  package com.example.trypdf;

import java.io.File;
import java.io.FilenameFilter;

import com.example.trypdf.Second;
import net.sf.andpdf.pdfviewer.PdfViewerActivity;
import android.app.ListActivity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Environment;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;

public class PDFViewerActivity extends ListActivity {

    String[] pdflist;
    File[] imagelist;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //setContentView(R.layout.main);

        File images = Environment.getExternalStorageDirectory();
        imagelist = images.listFiles(new FilenameFilter() {
            public boolean accept(File dir, String name) {
                return ((name.endsWith(".pdf")));
            }
        });
        pdflist = new String[imagelist.length];
        for (int i = 0; i < imagelist.length; i++) {
            pdflist[i] = imagelist[i].getName();
        }
        this.setListAdapter(new ArrayAdapter<String>(this,
                android.R.layout.simple_list_item_1, pdflist));
    }

    protected void onListItemClick(ListView l, View v, int position, long id) {
        super.onListItemClick(l, v, position, id);
        String path = imagelist[(int) id].getAbsolutePath();
        openPdfIntent(path);
    }

    private void openPdfIntent(String path) {
        try {
            final Intent intent = new Intent(PDFViewerActivity.this, Second.class);
            intent.putExtra(PdfViewerActivity.EXTRA_PDFFILENAME, path);
            startActivity(intent);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

Second.java

     package com.example.trypdf;

import net.sf.andpdf.pdfviewer.PdfViewerActivity;
import net.sf.andpdf.pdfviewer.R;
import net.sf.andpdf.pdfviewer.R.drawable;
import net.sf.andpdf.pdfviewer.R.id;
import net.sf.andpdf.pdfviewer.R.layout;
import android.os.Bundle;

public class Second extends PdfViewerActivity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
    }

    public int getPreviousPageImageResource() {
        return R.drawable.left_arrow;
    }

    public int getNextPageImageResource() {
        return R.drawable.right_arrow;
    }

    public int getZoomInImageResource() {
        return R.drawable.zoom_in;
    }

    public int getZoomOutImageResource() {
        return R.drawable.zoom_out;
    }

    public int getPdfPasswordLayoutResource() {
        return R.layout.pdf_file_password;
    }

    public int getPdfPageNumberResource() {
        return R.layout.dialog_pagenumber;
    }

    public int getPdfPasswordEditField() {
        return R.id.etPassword;
    }

    public int getPdfPasswordOkButton() {
        return R.id.btOK;
    }

    public int getPdfPasswordExitButton() {
        return R.id.btExit;
    }

    public int getPdfPageNumberEditField() {
        return R.id.pagenum_edit;
    }
}

清单

    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.trypdf"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="15" />
 <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
        <activity
            android:name="com.example.trypdf.PDFViewerActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
        android:name="com.example.trypdf.Second"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>
    </application>
</manifest>

谢谢!!!

【问题讨论】:

    标签: android noclassdeffounderror pdf-viewer


    【解决方案1】:

    要解决此问题,您需要:

    1. 在项目中创建一个名为“libs”的文件夹。 2 将项目所需的库导入到这个新文件夹中。 2.1。要导入它们:右键单击 libs 文件夹--> 导入--> 文件系统-> 选择 .jar 并接受。
    2. 清理、构建和启动

    来源:Akki

    【讨论】:

      【解决方案2】:

      从 PdfViewerActivity 活动中删除 import net.sf.andpdf.pdfviewer.PdfViewerActivity;

      您的包名是 com.example.trypdf 而不是 net.sf.andpdf.pdfviewer

      将您的代码更改为 PdfViewerActivity Activity 为

      Yourr PDFViewerActivity as:
      
      package com.example.trypdf;
      package net.sf.andpdf.pdfviewer;
      
      import java.io.File;
      import java.io.FilenameFilter;
      
      
      import android.app.ListActivity;
      import android.content.Intent;
      import android.os.Bundle;
      import android.os.Environment;
      import android.view.View;
      import android.widget.ArrayAdapter;
      import android.widget.ListView;
      
      public class PDFViewerActivity extends ListActivity {
      
         //your code here/......
      }
      

      第二次:

      package com.example.trypdf;
      package net.sf.andpdf.pdfviewer;
      
      import android.os.Bundle;
      
      public class Second extends PdfViewerActivity {
      //your code here/......
      
      }
      

      【讨论】:

      • 在清单中添加
      • 然后尝试使用包net.sf.andpdf.pdfviewer;而不是导入 net.sf.andpdf.pdfviewer.PdfViewerActivity;
      • @Androiduser : plz 广告包 com.example.trypdf;也在两个活动中
      • 我已经编辑了帖子,所以你可以看到两个班级的状态,我已经改变了包,但仍然不起作用:(我做得好吗是问我吗?
      • 但 PDFViewerActivity 和 Second 它们应该在包 com.example... 或 net.sf 中?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-09
      • 2015-05-12
      • 2023-03-28
      • 1970-01-01
      • 2022-01-22
      • 1970-01-01
      相关资源
      最近更新 更多