snow_saboten
@snow_saboten

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

java.lang.module.FindExceptionと java.lang.module.InvalidModuleDescriptorException

解決したいこと

Javaでエクセル操作をやってみようと思い、調べながらやっているとこのエラーにぶつかりました。調べてみたものの解決方法が分からなかったので、調べる方法or解決方法を教えていただきたいです。

・ApachePOIのダウンロードからビルドパスへの追加はこちらのサイトを参考にしました。が、このサイトとApachePOIのバージョンが違い、サイトでは追加しているpoi-ooxml-schemasのファイルは無かったので、代わりにpoi-ooxml-fullを追加してみました。しかし、この状態で実行すると別のエラーが出たので、ダウンロードしたApachePOIの全jarファイルを追加しています。
buildpass.png
・書いたコードは、こちらのサイトのエクセルファイルの読込をするコードです。

コード自体にエラーは出ませんでしたが、実行するとコンソールにエラーが出てきます。

環境

Windows10
Maven未使用
Eclipse 4.24.0
pon-bin-5.2.3
jdk-18.0.1.1

発生している問題・エラー

Error occurred during initialization of boot layer
java.lang.module.FindException: Unable to derive module descriptor for C:\Users\Username\Java\poi-bin-5.2.3\auxiliary\batik-script-1.14.jar
Caused by: java.lang.module.InvalidModuleDescriptorException: Provider class org.apache.batik.bridge.RhinoInterpreterFactory not in module

該当するソースコード

public class Main {
  public static void main(String[] args) throws EncryptedDocumentException, IOException{
    // Excelファイルへアクセス
    Workbook excel = WorkbookFactory.create(new File("User.xlsx"));
 
    // シート名を取得
    Sheet sheet = excel.getSheet("user_data");
 
    // 0行目を取得
    Row row = sheet.getRow(0);
 
    // 0番目のセルの値を取得
    Cell cell_name = row.getCell(0);
    // 1番目のセルの値を取得
    Cell cell_sex = row.getCell(1);
    // 2番目のセルの値を取得
    Cell cell_age = row.getCell(2);
 
    // セルの値を文字列として取得
    String value_name = cell_name.getStringCellValue();
    String value_sex = cell_sex.getStringCellValue();
    String value_age = cell_age.getStringCellValue();
 
    // 文字列を結果として表示
    System.out.println("value_name : " + value_name);
    System.out.println("value_sex : " + value_sex);
    System.out.println("value_age : " + value_age);
  }
}

自分で試したこと

・ビルドパスへの入れ直しやApachePOIの再ダウンロードなどは試してみましたが効果なしです。

0

1Answer

Your answer might help someone💌