Excelファイルを読みたいのですが
Exception in thread "main" Java.lang.NoClassDefFoundError: org/Apache/xmlbeans/XmlObject
at ExcelReader.main(ExcelReader.Java:32)
Caused by: Java.lang.ClassNotFoundException: org.Apache.xmlbeans.XmlObject
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 Java.lang.ClassLoader.loadClass(Unknown Source)
at Sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at Java.lang.ClassLoader.loadClass(Unknown Source)
... 1 more
私を助けてください。最初に.xlsxファイルを開いてから、最初のシートを渡します。最後にコンソールでExcelファイルのデータを印刷します。 Ps:私はpoi-ooxml-3.9-20121203.jarをプロジェクトに追加します。
import Java.io.File;
import Java.io.FileInputStream;
import javax.swing.text.html.HTMLDocument.Iterator;
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.Row;
import org.Apache.poi.xssf.usermodel.XSSFSheet;
import Java.util.*;
import org.Apache.poi.xssf.usermodel.XSSFWorkbook;
/**
* @author mohammad hosein
*
*/
public class ExcelReader {
/**
* @param args
*/
public static void main(String[] args) {
try
{
FileInputStream file = new FileInputStream(new File("E:\\test.xlsx"));
//Get the workbook instance for XLS file
XSSFWorkbook workbook = new XSSFWorkbook (file);
//Get first sheet from the workbook
XSSFSheet sheet = workbook.getSheetAt(0);
//Get iterator to all the rows in current sheet
Java.util.Iterator<Row> rowIterator = sheet.iterator();
while(rowIterator.hasNext())
{
Row row = rowIterator.next();
Java.util.Iterator<Cell> cellIterator = row.cellIterator();
while(cellIterator.hasNext())
{
Cell cell = cellIterator.next();
System.out.print(cell.getStringCellValue() + "\t");
}
System.out.println("");
}
}
catch(Exception e)
{
System.out.println("EROR!");
}
//Get iterator to all cells of current row
}
}
あなたのコードは無関係です。 NoClassDefFoundError
は、コンパイル時に使用できたクラスが実行時に使用できない場合に発生します。完全なスタックトレースを、見つからなかったクラスの実際の名前とともに提供した場合、より正確なアドバイスを与えることができます。
通常、これは、コードのビルドに使用されたものとは異なるバージョンのJARでコードを実行しているときに発生します。不正なJARは、アプリケーションコンテナなどから取得され、適切なJARよりもクラスパスの前に配置される場合があります。
追加したスタックトレースを考えると、Apache POI:XMLBeansの推移的な依存関係がありません。実行時にこのJARが欠落している可能性があります。これはすべて、プロジェクトをどの程度正確に実行しているかによって異なります。
プロジェクトのプロパティでライブラリをチェックするのを忘れていると思います。
これは、必要なpoi jarファイルがすべて追加されていない場合に発生します。したがって、必要なすべてのjarファイルを追加することをお勧めします。 libおよびooxml-libフォルダー内のjarファイルをpoi-3.15-beta2 jarファイルとともに追加します。 jarを追加する方法
ライブラリに「commons-collections.jar」ファイルが追加されていることを確認してください。そうでない場合は、ここからすべてのライブラリファイルをダウンロードしてください。
http://www-us.Apache.org/dist/poi/release/bin/poi-bin-3.16-20170419.Zip
Zipファイルにダウンロード後、「lib」フォルダーを開くと、添付の画像にあるように、プロジェクトライブラリに追加する必要があるcommon-collectins.jarファイルが見つかります。
Apache POIドキュメントは さまざまなコンポーネントとその依存関係の完全なリスト を提供します。 poi-ooxml
を使用したいが、xmlbeans
依存関係を見逃しているようです(おそらく他の依存関係も!)。すべてが必要なものの詳細については、 コンポーネントページ を参照してください。
Apache POIのバイナリリリース をダウンロードすると、必要なすべての依存関係がパッケージに含まれていることがわかります。必要なものを追加するだけです。
手動での作業がすべて難しい場合は、 Apache Maven または Apache Ivy のようなものを使用して、依存関係を管理します。
次に、これらのjarファイルを2回使用できるようにする必要があります。コンパイル用と実行用です。 Eclipseなどでjarファイルを用意するだけでは不十分な場合があります。それらを実稼働環境に取り込む必要もあります。
XSSFWorkbookがそれらを使用するときに含まれる必要があるpoi-3.9に付属する2つの重要なjarファイルがあります。
xmlbeans * .jar dom4j-*。jar
これらのjarは両方ともooxml-libフォルダーにあり、poi-3.9 * .Zipの一部です。それらをライブラリに含めれば、問題が解決するはずです。
ビルドパスにxmlbeans-2.3.0.jarを追加します。これは、xlsxに必要です。
NoClassDefFoundError
は、コンパイル時にクラスが存在したが、Java実行時にクラスパスで使用できない場合に発生します。通常、NoClassDefFoundErrorを取得すると、以下の行がログに表示されます。
このサイト は、このエラーが発生する理由をすべて示します。解決方法は3通りあります。
私は同じ問題を抱えていました。 (Netbeansを使用して)フォルダー全体をライブラリーに追加することにより、\ ooxml-lib \フォルダーにJARを追加しました。私はこれを削除し、それぞれを手動で追加しましたが、うまくいきました。
名前がClassNotFoundException
を示唆しているようにJavaはJava.lang.Exception
のサブクラスであり、Java Virtual Machineが試みたときに来ます特定のクラスをロードし、要求されたクラスがクラスパスに見つからない
この例外に関するもう1つの重要な点は、チェック済み例外であり、ClassNotFoundException
in =をスローする可能性のあるメソッドを使用しているときに明示的に例外処理を提供する必要があることです。 Java try-catchブロックを使用するか、throws句を使用します。
public class ClassNotFoundException
extends ReflectiveOperationException
アプリケーションが文字列名を使用してクラスをロードしようとすると、次のようにスローされます。
しかし、指定された名前のクラスの定義が見つかりませんでした。
poi-ooxml-schemas-3.9-20121203.jar
ファイルをクラスパスに追加して、例外を回避します。
これらのリンクにあります
編集
POIに付属する追加のjarファイルがありません。それらをクラスパスに含めます。xmlbeans-x.x.x.jar
という名前のjarファイルを含める必要があります ここにjarを取得 。
XMLBeans
通常、NoClassDefFoundError
exception
は、必要なjarが利用できない場合に発生します。
以下の条件を確認してください
Jar file path
デフォルトで追加したpoi-ooxml-3.9-20121203.jar
追加のjarが必要かどうかを完全に確認します。コンパイル時に、インポートしていないクラスファイルがプログラムに必要になる場合があります。
poi-3.7-jdk1.4-20110508-rc2
jarが必要です。