みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

オブジェクトのデータをもとにXMLの作成で失敗。

java.lang.IllegalAccessException: Class sun.reflect.misc.Trampoline can not access a member of class Data with modifiers ""
Continuing ...
java.lang.RuntimeException: failed to evaluate: <unbound>=Class.new();
Continuing ...

上記のようなエラーが出てしまいます。
ソースコードは以下の通りです。

XMLEncoder xmlencoder=new XMLEncoder(
new BufferedOutputStream(
new FileOutputStream("出力先ファイルのパス")));

xmlencoder.writeObject(hoge);
decoder.close();

xmlencoderはXMLEncoder型
hogeは配列型のコンストラクタ。

配列の数だけエラーが出るので、hogeの読み取りのたびにエラーが出るようです。
ちなみにhogeのもとになるクラスにはデフォルトコンストラクタ
Hoge(){}
とフィールドごとにgetterとsetterをつけています。

おかしいとすれば次の2か所だと思うのですが原因がわかる方いたら教えてください。
(1)XMLEncoderやwriteObjectの使い方
(2)hogeに問題がある。

投稿日時 - 2011-03-07 22:15:11

QNo.6576955

困ってます

質問者が選んだベストアンサー

> Hoge(){}

を public Hoge() {} にしてください。

投稿日時 - 2011-03-08 03:33:36

補足

さっそく
public Hoge(){}にしてみたのですが、まだ改善されません。

投稿日時 - 2011-03-08 07:13:10

お礼

クラスを宣言するときに
publicをつけると解決しました。

投稿日時 - 2011-03-08 09:24:15

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

XMLEncoder自体の使い方は、そんなに問題があるというような複雑なものでもありませんし、やはり、普通に考えれば保存しようとしているクラスの定義にどこか問題があるということだろうと思います。そのhogeインスタンスはどういうクラスなのでしょう。そのクラスの定義を掲載するわけにはいきませんか? そのほうが回答が付きやすいと思いますが。

投稿日時 - 2011-03-08 08:27:03

お礼

クラスの定義に問題がありました。
public をつけると解決しました。

投稿日時 - 2011-03-08 09:24:19

あなたにオススメの質問