我是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文件,并且它可以工作。
不确定为什么会这样,也没有时间进行最终测试,但案件已经结束。
感谢您的帮助