目次

目次

Java Beans で IllegalAccessException

高橋克幸
高橋克幸
最終更新日2017/05/08 投稿日2017/05/08

はじめに

OpenCSV で csv ファイルを読み込むため、値の受け渡しにJava Beansを利用しました。単純なミスでパース出来なかったので覚え書きです。

パース時のエラー

Exception in thread "main" java.lang.RuntimeException: java.lang.RuntimeException: Error parsing CSV line: 1 values: [0001, hoge]
    at ocsv.Main.opencsvToBean(Main.java:34)
    at ocsv.Main.main(Main.java:19)
Caused by: java.lang.RuntimeException: Error parsing CSV line: 1 values: [0001, hoge]
    at com.opencsv.bean.CsvToBean.parse(CsvToBean.java:179)
    at com.opencsv.bean.CsvToBean.parse(CsvToBean.java:104)
    at ocsv.Main.opencsvToBean(Main.java:32)
    ... 1 more
Caused by: java.lang.IllegalAccessException: Class com.opencsv.bean.HeaderColumnNameMappingStrategy can not access a member of class ocsv.Parson with modifiers ""
    at sun.reflect.Reflection.ensureMemberAccess(Reflection.java:102)
    at java.lang.Class.newInstance(Class.java:436)
    at com.opencsv.bean.HeaderColumnNameMappingStrategy.createBean(HeaderColumnNameMappingStrategy.java:266)
    at com.opencsv.bean.CsvToBean.processLine(CsvToBean.java:217)
    at com.opencsv.bean.CsvToBean.processLine(CsvToBean.java:189)
    at com.opencsv.bean.CsvToBean.parse(CsvToBean.java:166)
    ... 3 more

原因

原因としては、Java Beans を外部クラスと定義していたので、アクセス修飾子が protected となっていたためでした。protected は パッケージ外から操作できないので、OpenCSV ライブラリの方でインスタンスを生成することができずエラーをはいてました。

解決方法

Java Beans を外に出して、アクセス修飾子を public にすることで解決しました。

高橋克幸

新卒3年目で脱新人を目指してます。
フロントに興味を持ち始めた今日このごろ。
趣味は 麻雀 プログラミング 音楽。
運動不足を感じているため、ダンスを始めようかと思っています。

目次