1

Java POI を使用して Excel ファイルを読み取る Java-web-start アプリケーションを開発しています。私の問題は、コードを実行するたびにエラーが返されることです。

Exception in thread "Thread-13" java.lang.NoClassDefFoundError: org/apache/poi/ss/usermodel/WorkbookFactory
    at digicare.tracking.serial.BulkUpload.UploadProgress$1read2.run(UploadProgress.java:89)
    at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.ClassNotFoundException: org.apache.poi.ss.usermodel.WorkbookFactory
    at java.net.URLClassLoader$1.run(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 com.sun.jnlp.JNLPClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)

これが私のコードです:

try {
            InputStream inp = new FileInputStream(FilePath);
        Workbook wb = WorkbookFactory.create(inp);
        Sheet sheet = wb.getSheetAt(0);
        int maxrows = sheet.getPhysicalNumberOfRows();
        for (int r = 1; r < maxrows; r++) { 
            Thread.sleep(1000);
            lblCurrentRow.setText(String.valueOf(r));
            prbProgBar.setValue(r);                                       
                    txtOutPut.append(String.format("Done!!\n"));
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
4

3 に答える 3

1

以前にこれに遭遇しましたが、実際には追加するjarファイルが1つだけではなく、次の名前の別のjarファイルがあります:poi-ooxml-x.jar(xはバージョン)、poi-xではなくWorkbookFactoryを含むこのファイルです.jar、両方を含める必要があります

----------------------------------------------------------------------------

編集 私はいくつかの調査を行いましたが、クラスパスの問題はプロジェクトがJava Web Startアプリケーションであることに関連していると思います:

マニフェスト ファイルの Class-Path に依存できますか?

Java Web Start は、マニフェスト ファイル内の Class-Path エントリをサポートしていません。Class-Path 属性は完全にファイル中心であり、Java Web Start および JNLP は Web 中心、つまり URL に基づいています。したがって、2 つのモデルは簡単には融合しません。

Class-Path エントリに依存する代わりに、JNLP ファイルに複数の JAR ファイルをリストできます。たとえば、次のようになります。

<resources>
     <jar href="A.jar"/> 
     <jar href="B.jar"/>  
</resources>

ここに私が見つけたリンクがあります:http://webstartfaq.com/#52

于 2013-09-13T11:25:26.930 に答える
0

POI jar の一部が欠落しています。具体的には、確かにpoi-ooxmljar が不足していますが、他にも不足している可能性があります...

Apache POI は、コンポーネント、その jar、およびその依存関係を一覧表示する便利なページを提供します。そのページで説明されているように、共通org.apache.poi.ss.usermodelクラス (例: WorkbookFactory ) を使用する場合は、メインの POI jar、POI-OOXML jar、およびそれぞれの依存関係が必要です。

これらの 2 つの jar とその依存関係を追加するか、maven に切り替えてプロジェクトをpoiプラスに依存するものとしてリストするとpoi-ooxml、必要なクラスが得られます。

于 2013-09-13T11:51:49.063 に答える