报错为:Exception in thread "main" java.lang.NoClassDefFoundError:MyExcel(wrong name:myexcel/MyExcel) at java.lang.ClassLoader.defineClass0<Native Method> ...
public ArrayList readExcel(String filePath) { ArrayList _myExA=new ArrayList(); PropertyConfigurator.configure("D:\\project\\mytree\\WebRoot\\log4j.properties"); logger.setLevel ( ( Level ) Level.DEBUG ) ; try { InputStream is = new FileInputStream(filePath); //add for log4j: log a message with the info level logger.info("文件加入成功"); Workbook rwb = Workbook.getWorkbook(is); //Sheet st = rwb.getSheet("0")这里有两种方法获取sheet表,1为名字,而为下标,从0开始 Sheet st = rwb.getSheet(0); // Cell c00 = st.getCell(0,1); int myCol=st.getColumns(); //add for log4j: log a message with the info level logger.info("列数:"+myCol); //定义一个MyBean的数组,长度为myCol int myR=st.getRows(); //add for log4j: log a message with the info level logger.info("行数:"+myR); for (int j=0;j<myR;j++){ MyBean[] StrMyBean=new MyBean[myCol]; for(int i=0;i<myCol;i++){ Cell c=st.getCell(i,j); //通用的获取cell值的方式,返回字符串 String strc = c.getContents(); //写入到StrMyBean数组中 MyBean _myB=new MyBean(); _myB.setvalue(strc); StrMyBean[i]=_myB; //System.out.print(StrMyBean[0].getvalue()+" "); } _myExA.add(StrMyBean); //System.out.println(((MyBean[])(_myExA.get(j)))[3].getvalue()); } //add for log4j: log a message with the info level logger.info("数据倒入到ArrayList。"); //关闭 rwb.close(); //显示存放在ArrayList中的值是否正确 for(int i=0;i<_myExA.size();i++){ MyBean[] myB=(MyBean[])(_myExA.get(i)); for(int j=0;j<myB.length;j++){ System.out.print(myB[j].getvalue()+" "); } System.out.println(); } } catch(Exception e) { //add for log4j: log a message with the error level logger.error ( "Server constructor IOException: " + e ) ; e.printStackTrace(); } return _myExA; } public static void main(String[] args){ MyExcel _myE=new MyExcel(); _myE.readExcel("D:/project/mytree/WebRoot/people.xls");
那么要在d:\workspace路径下运行 java myexcel.MyExcel
这个错误就完全可以确定是没有dll文件的问题
关键你要看这个dll文件在哪儿了,然后靠到这个类这里就可以了
你最好把源代码贴出来
还有阿,兄弟我每次帮你你的分数都是平均的。
package myexcel;import jxl.*;
import jxl.format.UnderlineStyle;
import jxl.write.*;
import jxl.write.Number;
import jxl.write.Boolean;
import java.io.*;
import java.util.*;
import myBean.*;
import java.io.File;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.apache.log4j.PatternLayout;
import org.apache.log4j.RollingFileAppender;
import org.apache.log4j.*;
public class MyExcel {
/**
* 读取Excel
* @param filePath
*/
static final Logger logger = (Logger) Logger.getLogger(MyExcel.class);
public ArrayList readExcel(String filePath)
{
ArrayList _myExA=new ArrayList();
PropertyConfigurator.configure("D:\\project\\mytree\\WebRoot\\log4j.properties");
logger.setLevel ( ( Level ) Level.DEBUG ) ;
try
{
InputStream is = new FileInputStream(filePath);
//add for log4j: log a message with the info level
logger.info("文件加入成功");
Workbook rwb = Workbook.getWorkbook(is);
//Sheet st = rwb.getSheet("0")这里有两种方法获取sheet表,1为名字,而为下标,从0开始
Sheet st = rwb.getSheet(0);
// Cell c00 = st.getCell(0,1);
int myCol=st.getColumns();
//add for log4j: log a message with the info level
logger.info("列数:"+myCol);
//定义一个MyBean的数组,长度为myCol
int myR=st.getRows();
//add for log4j: log a message with the info level
logger.info("行数:"+myR);
for (int j=0;j<myR;j++){
MyBean[] StrMyBean=new MyBean[myCol];
for(int i=0;i<myCol;i++){
Cell c=st.getCell(i,j);
//通用的获取cell值的方式,返回字符串
String strc = c.getContents();
//写入到StrMyBean数组中
MyBean _myB=new MyBean();
_myB.setvalue(strc);
StrMyBean[i]=_myB;
//System.out.print(StrMyBean[0].getvalue()+" ");
}
_myExA.add(StrMyBean);
//System.out.println(((MyBean[])(_myExA.get(j)))[3].getvalue());
}
//add for log4j: log a message with the info level
logger.info("数据倒入到ArrayList。");
//关闭
rwb.close();
//显示存放在ArrayList中的值是否正确
for(int i=0;i<_myExA.size();i++){
MyBean[] myB=(MyBean[])(_myExA.get(i));
for(int j=0;j<myB.length;j++){
System.out.print(myB[j].getvalue()+" ");
}
System.out.println();
}
}
catch(Exception e)
{
//add for log4j: log a message with the error level
logger.error ( "Server constructor IOException: " + e ) ; e.printStackTrace();
}
return _myExA;
}
public static void main(String[] args){
MyExcel _myE=new MyExcel();
_myE.readExcel("D:/project/mytree/WebRoot/people.xls");
}
}
在MyEclipse里面运行正常,excel装了
建议你用fatjar包导出,很方便的,不用再设置classpath
文件 "mytree_fat.jar" 已经在工程根目录下生成了
并且文件用来保存配置的以".fatjar"结尾的文件也在工程根目录下生成了.
生成的jar文件包含它所引用的jar包(mytree_fat.jar)的所有类和它本身的工程类.
这个文件可用在任何地方执行, 免设置classpath变量, 因为所有必须的类库都萃取到"Fat Jar":中了:最后就可以在dos环境下面执行命令(格式如下):> java -jar mytree_fat.jar
今天启动tomcat发现特别慢,得等1分多钟才启动完,这才想起来,我把WEB-INFO/lib/struts.jar , pager-tag.jar都删除了,取而代之的是他们的源码,tomcat启动的时候因为找不到jar文件就要重新编译,所以特别地慢。因此,我把struts.jar拷贝到WEB-INFO/lib下了,现在缺pager-tag.jar了。(其实pager-tag的源码编译不慢,主要是struts源码编译比较慢)我找了一下把程序打包的工具,其实eclipse自己带了一个export工具可以打包,你的项目=〉export=>jar file=>然后挨个选择你需要的包=〉写好目标jar文件名=〉写好目标目录=〉就生成新jar了。其实这样已经能够满足我的要求了,查看Eclipse如何打包的过程中我发现有个fatjar插件功能更强些,可以把需要的资源打进一个jar里。所以下载了一个,下载地址:http://sourceforge.net/project/showfiles.php?group_id=115990&package_id=125924
解压缩后是一个.../plugins/(net...)把plugins下面的(net..)文件夹拷贝到eclipse的plugins下,重新启动Eclipse3.1,Windows=>prefernce=>fat jar preference看到他就说明已经安装成功了。如果没有看到,没有关系,删除D:\eclipse310\configuration\org.eclipse.update\platform.xml文件(此文件可以自动生成)不用担心以前的插件会因此而消失,没事。刚开始找不到如何使用它,后来看到你的项目=〉Export..=>向导里有fat jar =>使用起来真的很方便。总结:
一般把src打包export=>Jar File 即可。
想把src附属的资源一起打包,必须使用FatJar => export..=>FatJar.Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=492760
http://blog.csdn.net/srx/archive/2005/09/30/492760.aspx