この記事は最終更新日から1年以上が経過しています。
はじめに
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年目で脱新人を目指してます。
フロントに興味を持ち始めた今日このごろ。
趣味は 麻雀 プログラミング 音楽。
運動不足を感じているため、ダンスを始めようかと思っています。
最近書いた記事
- 2019.06.26コンテナイメージの縮小
- 2019.05.27Chromeのユーザ切り替えで複数のAWS環境の管理をわかりやすくする
- 2019.04.15ECRのライフサイクルポリシー
- 2019.03.29KongでOAuth2の認証手順