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