LoginSignup
1
1

More than 5 years have passed since last update.

IClassFileをエディターで開くときに躓いたので調べた

Posted at

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");
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1