NoClassDefFoundError:org.apache.poi.hssf.usermofdel.HSSFWorkbook

时间:2014-02-04 01:59:45

标签: java android eclipse apache-poi

我是eclipse / android / java的新手,所以请耐心等待。我有几个应用程序在运行,所以我认为我已经掌握了一些概念,但这让我很难过。

我正在编写一个引用Excel电子表格的Android应用程序,所以我下载了apache poi-3.9-20121203.jar并使用project / properties / java_build_path / add_external_JARs将poi-3.9.jar添加到Referenced libraries选项卡。

我点击了订单和导出标签上的poi-3.9框

我徘徊并通过HSSFWorkbook工作簿导入=新的HSSFWorkbook();这些在导入列表中引用。项目中没有错误,但是当我在Nexus 7上运行时,我收到了错误

java.lang.NoClassDefFoundError:org.apache.poi.hssf.usermodel.HSSFWorkbook

该类列在参考库中。

我刚开始使用excel,只需剪切并粘贴教程中的代码即可实现: http://viralpatel.net/blogs/java-read-write-excel-file-apache-poi/

package com.procam.filetest;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;

import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.RichTextString;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.*;

public class MainActivity extends Activity {

Button butCreateSpreadsheet, butEmailFile;
String filename;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    butCreateSpreadsheet = (Button) findViewById(R.id.butCreateSpreadsheet);
    butEmailFile = (Button) findViewById(R.id.butEmailFile);

    butCreateSpreadsheet.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {

// copied code starts here

            HSSFWorkbook workbook = new HSSFWorkbook();
            HSSFSheet sheet = workbook.createSheet("Sample sheet");

            Map<String, Object[]> data = new HashMap<String, Object[]>();
            data.put("1", new Object[] {"Emp No.", "Name", "Salary"});
            data.put("2", new Object[] {1d, "John", 1500000d});
            data.put("3", new Object[] {2d, "Sam", 800000d});
            data.put("4", new Object[] {3d, "Dean", 700000d});

            Set<String> keyset = data.keySet();
            int rownum = 0;
            for (String key : keyset) {
                org.apache.poi.ss.usermodel.Row row = sheet.createRow(rownum++);
                Object [] objArr = data.get(key);
                int cellnum = 0;
                for (Object obj : objArr) {
                    Cell cell = ((org.apache.poi.ss.usermodel.Row) row).createCell(cellnum++);
                    if(obj instanceof Date) 
                        cell.setCellValue((RichTextString)obj);
                    else if(obj instanceof Boolean)
                        cell.setCellValue((Boolean)obj);
                    else if(obj instanceof String)
                        cell.setCellValue((String)obj);
                    else if(obj instanceof Double)
                        cell.setCellValue((Double)obj);
                }
            }

            try {
                FileOutputStream out = 
                        new FileOutputStream(new File("C:\\new.xls"));
                workbook.write(out);
                out.close();
                System.out.println("Excel written successfully..");

            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }       



//ends here             

        }   
    });


}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}



}

看起来像Referenced库不会去Nexus。我搜索了stackoverflow,发现了一些引用将引用的库链接到项目的引用,但是没有足够的理解来理解它们。

poi-3.9库不能进入Nexus 7是否存在问题?

简单解释帮助非常感谢。

* 不确定如何更新帖子,但我重建了课程。这次我在引用它们的代码之前添加了POI jar文件,并且它可以工作。

不确定为什么会这样,也没有时间进行最终测试,但案件已经结束。

感谢您的帮助

0 个答案:

没有答案