2016-07-18 11 views
0

私はApache POIを使用してExcelファイルを読み込みます(xlsおよびxlsx形式)。 IDE(私はIntelliJを使用しています)で正常に動作しますが、プロジェクトをJARにすると、Excelファイルを読み取ることができません。私はファイルのフルパスを与えてみましたが、動作しませんでした。 ファイル名のスペルが正しいか、ファイルが保護されていないか、または読み取り専用の形式です。私がJARを走らせるまではすべてが良いです。ここでJARに変換したときにjavafxでExcelファイルを読み取ることができません

java.lang.reflect.InvocationTargetException 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
    at java.lang.reflect.Method.invoke(Unknown Source) 
    at com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(Unknown Source) 
    at com.sun.javafx.application.LauncherImpl.launchApplication(Unknown Source) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
    at java.lang.reflect.Method.invoke(Unknown Source) 
    at sun.launcher.LauncherHelper$FXHelper.main(Unknown Source) 
Caused by: java.lang.NoClassDefFoundError: org/apache/poi/hssf/usermodel/HSSFWorkbook 
    at TakeInput.Take(TakeInput.java:25) 
    at MainGUI.main(MainGUI.java:53) 
    ... 11 more 
Caused by: java.lang.ClassNotFoundException: org.apache.poi.hssf.usermodel.HSSFWorkbook 
    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) 
    ... 13 more 
Exception running application MainGUI 

は私TakeInputクラスです:

import org.apache.poi.hssf.usermodel.HSSFSheet; 
import org.apache.poi.hssf.usermodel.HSSFWorkbook; 


import java.io.*; 
import java.util.Arrays; 
import java.util.Comparator; 
import java.util.StringTokenizer; 

public class TakeInput { 

public void Take() throws Exception{ 
    System.out.println("Inside TakeInput class.."); 

    File f = new File("courses.xls"); 
    FileInputStream fs = new FileInputStream(f); 
    HSSFWorkbook wb = new HSSFWorkbook(fs); 
    HSSFSheet sheet = wb.getSheetAt(0); 


    int CSECourseCounter=0; 

    for(int i=0;i<=sheet.getLastRowNum();i++){ 
     String tempCode = sheet.getRow(i).getCell(0).getStringCellValue(); 
     StringTokenizer tok = new StringTokenizer(tempCode); 

     String codeTok=tok.nextToken(); 

     if(codeTok.equals("CSE") || codeTok.equals("CSI")) { 
      CSECourseCounter++; 
     } 

    } 

    CourseInfo[] courses = new CourseInfo[CSECourseCounter]; 
    for(int i=0;i<CSECourseCounter;i++) 
     courses[i]=new CourseInfo(); 

    System.out.println(sheet.getLastRowNum()); 


    for(int i=0,j=0;i<=sheet.getLastRowNum();i++){ 
     String tempCode = sheet.getRow(i).getCell(0).getStringCellValue(); 
     StringTokenizer tok = new StringTokenizer(tempCode); 

     String codeTok=tok.nextToken(); 

     if(codeTok.equals("CSE") || codeTok.equals("CSI")) { 
      courses[j].code = sheet.getRow(i).getCell(0).getStringCellValue(); 
      courses[j].title = sheet.getRow(i).getCell(1).getStringCellValue(); 
      courses[j].section = sheet.getRow(i).getCell(2).getStringCellValue(); 
      courses[j].day = sheet.getRow(i).getCell(4).getStringCellValue(); 
      courses[j].time = sheet.getRow(i).getCell(5).getStringCellValue(); 
      //courses[i].room = sheet.getRow(i).getCell(6).getNumericCellValue(); 
      //System.out.println(courses[j].code); 
      j++; 
      //CSECourseCounter++; 
     } 
    } 

    Arrays.sort(courses, new Comparator<CourseInfo>() { 
     @Override 
     public int compare(CourseInfo o1, CourseInfo o2) { 
      return o1.title.compareTo(o2.title); 
     } 
    }); 

    System.out.println("CSE courses = "+CSECourseCounter); 

    for(int i=0;i<CSECourseCounter;i++){ 
     courses[i].setCampus(); 
     courses[i].setLabCLassAndTimeSlot(); 
     courses[i].setDay(); 
    } 



    //***************************** CourseInfo to a linked list ****************** 

    for(int i=0;i<courses.length;i++){ 

     CourseToLinkedList temp = AddSearchCourse.searchCourse(courses[i].code); 

     if(temp==null) { 
      AddSearchCourse.addCourse(courses[i].title,courses[i].code,courses[i].islabClass); 
      CourseToLinkedList temp1 = AddSearchCourse.searchCourse(courses[i].code); 
      temp1.addSections(courses[i].code,courses[i].title,courses[i].section,courses[i].day,courses[i].time, 
        courses[i].timeStart,courses[i].timeEnd,courses[i].room, 
        courses[i].faculty,courses[i].credit,courses[i].assigned, 
        courses[i].campus,courses[i].dept,courses[i].islabClass, 
        courses[i].timeSlot,courses[i].labTimeSlot,courses[i].day1,courses[i].day2 
      ); 
     } 
     else{ 
      CourseToLinkedList temp1 = AddSearchCourse.searchCourse(courses[i].code); 
      temp1.addSections(courses[i].code,courses[i].title,courses[i].section,courses[i].day,courses[i].time, 
        courses[i].timeStart,courses[i].timeEnd,courses[i].room, 
        courses[i].faculty,courses[i].credit,courses[i].assigned, 
        courses[i].campus,courses[i].dept,courses[i].islabClass, 
        courses[i].timeSlot,courses[i].labTimeSlot,courses[i].day1,courses[i].day2 
      ); 
     } 
    } 

    System.out.println("outside try catch.."); 
} 
} 

私は、JARファイルが置かそのフォルダにプロジェクトフォルダ内にある、このExcelファイルのコピーを置きます。場所に問題はありません。

+0

[このJavaクラスが見つかりませんでした例外を解決するにはどうすればよいですか?](http://stackoverflow.com/questions/17408769/how-do-i-resolve-this-java-class-not-found-例外) – fabian

答えて

0

ログを見ることができるため、この問題はコードの依存関係のために発生する可能性があります。クラス 'HSSFWorkbook'を持つjarファイル( 'jakarta-poi-version.jar'の可能性があります)をクラスパスに追加してから、再度実行してみてください。

+0

Apache POI 3.14の外部JARをすべて追加しました jakarta-poi-version.jarをもう一度追加する必要がありますか? –

+0

ただ、Javaクラスのパス変数にそのjarファイルを追加しようとしていません。エラーが発生しているので、あなたのコードが目的のクラスを見つけられないようです。 –

関連する問題