2010-09-09 37 views
0
package myfirst; 
import org.apache.poi.hssf.usermodel.*; 
import org.apache.poi.ss.usermodel.*; 
import java.io.FileInputStream; 
import java.lang.Iterable; 
import java.net.URL; 
import java.net.URLConnection; 
import java.sql.*; 

public class ReadExcel { 
public static String fileToBeRead = "C:/Documents and Settings/Developer/Desktop/Anand exmps/Anand.xls"; 
public static void main(String argv[]) { 
String urlcnt=" "; 
Connection con=null; 
Statement stmt=null; 
int i=0; 
int j=0; 

try { 
    HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream(fileToBeRead)); 
    HSSFSheet sheet = workbook.getSheetAt(0); 
    //HSSFRow row = sheet.getRow(0); 
    //HSSFCell cell = row.getCell((short) 0); 
    for (Row row : sheet) { 
    //for (Cell cell : row) { 
     Cell firstCell = row.getCell(0); 
     urlcnt=firstCell.getRichStringCellValue().getString(); 
     System.out.println(urlcnt); 
     if(con==null){ 
       SQLConnection.setURL("jdbc:sqlserver://192.168.2.53\\SQL2005;user=sa;password=365media;DatabaseName=LN_ADWEEK"); 
       con=SQLConnection.getNewConnection(); 
       stmt=con.createStatement(); 
     } 
     try{ 
      ResultSet rs; 
      boolean hasRows=false; 
      rs=stmt.executeQuery("select url from urls_linkins where url='"+urlcnt+"'"); 
      while(rs.next()){ 
       hasRows=true; 
       i++; 
       //String mem=rs.getString(1); 
       rs.close(); 
       //return "This URL already exists in DB"; 
      } 
      if(!hasRows){ 
       j++; 
       PreparedStatement insertUrlStatement = con.prepareStatement("INSERT INTO urls_linkins(url, source_name, is_active, is_periodic, Link_Type, New_Entry) VALUES(?, ?, ?, ?, ?, ?)"); 
       //insertUrlStatement.setInt(1, 21211); 
       insertUrlStatement.setString(1, urlcnt); 
       insertUrlStatement.setInt(2, 1); 
       insertUrlStatement.setInt(3, 1); 
       insertUrlStatement.setInt(4, 0); 
       insertUrlStatement.setInt(5, 1); 
       insertUrlStatement.setInt(6, 1); 
       insertUrlStatement.executeUpdate(); 
       insertUrlStatement.close(); 
      } 
      } 
      catch(Exception e){ 
       e.printStackTrace(); 
      } 
      } 
}catch(Exception e){ 
    e.printStackTrace(); 
}finally{ 
    System.out.println(""+j+" url has been added and "+i+" url already exists in the DB"); 
} 
} 
} 

我编了上述程序成功地但在执行相同的,我收到以下错误NoClassDefFoundError的:READEXCEL(错误的名称

Exception in thread "main" java.lang.NoClassDefFoundError: ReadExcel (wrong name 
: myfirst/ReadExcel) 
    at java.lang.ClassLoader.defineClass1(Native Method) 
    at java.lang.ClassLoader.defineClassCond(Unknown Source) 
    at java.lang.ClassLoader.defineClass(Unknown Source) 
    at java.security.SecureClassLoader.defineClass(Unknown Source) 
    at java.net.URLClassLoader.defineClass(Unknown Source) 
    at java.net.URLClassLoader.access$000(Unknown Source) 
    at java.net.URLClassLoader$1.run(Unknown Source) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(Unknown Source) 
    at java.lang.ClassLoader.loadClass(Unknown Source) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) 
    at java.lang.ClassLoader.loadClass(Unknown Source) 
Could not find the main class: ReadExcel. Program will exit. 

这可怎么解决

。?按照要求将它作为myfirst.ReadExcel执行,但现在发现此错误。

Exception in thread "main"java.lang.NoClassDefFoundError:org/apache/poi/hssf/usermodel/HSSFWorkbook 
    at myfirst.ReadExcel.main(ReadExcel.java:20) 
Caused by: java.lang.ClassNotFoundException: org.apache.poi.hssf.usermodel.HSSFWorkbook 
    at java.net.URLClassLoader$1.run(Unknown Source) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(Unknown Source) 
    at java.lang.ClassLoader.loadClass(Unknown Source) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) 
    at java.lang.ClassLoader.loadClass(Unknown Source) 
    ... 1 more 
+0

你可以发布你正在使用的命令运行这个代码?你在使用IDE还是命令行编译器? – 2010-09-09 16:35:47

+0

我正在使用命令行编译器。 “java -cp。; poi-3.6-20091214.jar ReadExcel”这是我用来执行的命令。 – LGAP 2010-09-09 17:13:27

+0

你从哪个目录运行这个命令? – dogbane 2010-09-09 17:33:12

回答

2

你不应该从myfirst目录中运行这个。进入上一层,然后运行它:

C:\Program Files\Apache Software Foundation\Tomcat 5.5\webapps\CheckURL\WEB-INF\classes> java -cp .;..\lib\poi-3.6-20091214.jar myfirst.ReadExcel

+0

我已更新我的问题。你能帮忙吗? – LGAP 2010-09-09 17:43:31

+0

应注意的是,如果是web应用程序,第三方JAR文件通常放在'WEB-INF/lib'文件夹中,所以'-cp'应该读取'。; ../ lib/poi-3.6-20091214。 jar'。 – BalusC 2010-09-09 17:44:24

+0

WEB-INF中没有名为lib的文件夹。 – LGAP 2010-09-09 17:51:01

0

请尝试java -cp yourotherlib1.jar;yourotherlib2.jar myfirst.ReadExcel而不是java myfirst/ReadExcel

不要忘记在类路径中包含POI库及其依赖关系。

编辑:将classpath分隔符从:更改为;对于Windows。

+0

这样做,我得到这个错误,如上所示。 – LGAP 2010-09-09 16:01:13

+0

我会建议更新您的原始问题与您尝试和它的输出。它会更加明显,而且更具可读性。 – zigdon 2010-09-09 16:01:47

0

您必须在父文件夹中的“myFirst”文件夹中的和运行

java -cp **dependencies here** myfirst.ReadExcel 
+0

-cp标志应该在类的名称之前。 – dogbane 2010-09-09 17:44:58

+0

@fahdshariff是的,它确实...... – 2010-09-09 17:45:31