eclipseのプラグイン開発でjarファイル内にあるClassFileをエディターで開くとき、
通常の.javaファイルと同じように開こうとするとうまくいかない。
.javaファイルの場合は以下のような感じ。
IDE.openEditor(workbenchpage,
ResourcesPlugin.getWorkspace().getRoot().getFile(javaelement.getPath()));
ClassFileのIJavaElementに対してgetPathしてもjarファイルのパスが返ってきてしまうし、
むりくりパスを指定してもエディタがエラーを吐く。
デバッグで起動したeclipseで、手動の操作で.classファイルを開き、
エディタの情報を取得してみると、javaエディタではなくClassFileEditorという
専用っぽいエディタが使用されていた。
更に開いているファイルのパスを取得するとjarファイルとはぜんぜん違う、
一時フォルダ(C:\Users{user}\AppData\Local\Temp)に
置いてある.classファイルが参照されていた。
もう少し調べて、エディタにファイルを表示したりする場合は
IEditorInputというクラスを使うことがわかった。
IFileEditorInputというインターフェイスがあったので、
ClassFileEditorInputもあるんじゃないかと思って調べてみると、
「InternalClassFileEditorInput」というそれっぽいクラスがあった。
ソースを見てみると、コンストラクタで渡されたClassFileを
一時フォルダにコピーするという処理が書かれていた。
よってClassFileの場合はこうなる
IDE.openEditor(workbenchpage, new InternalClassFileEditorInput(classfile),
"org.eclipse.jdt.ui.ClassFileEditor");