いろんな訳あってブレークポイントをつけれるエディタを内蔵したいのだ。でも、JavaFXには良いテキストエディタがない。(だいたい、いつになったら全角文字がなんか変な色がつくの直るんだ?)
Threadをまたぐのは正直面倒くさいけど、背に腹は代えられない。SwingNodeでつっこんでやるから、Swingでもいいや、と思ったのだが意外にもSwingも全然ねぇ。
なら、JavaScriptでもいいよ!ということで、検索してみたら見つけました素晴らしいエディタ。その名もAce。
ブレークポイントあり、Emacsキーバインドあり(超高評価)の素晴らしいエディタです。これだ!これを突っ込もう。
というわけで、突っ込んでみました。
import java.nio.file.Path; import java.nio.file.Paths; import javafx.application.Application; import javafx.scene.Scene; import javafx.scene.web.WebView; import javafx.stage.Stage; public class AceEditor extends Application{ public static void main(final String[] args){ launch(args); } @Override public void start(final Stage s) throws Exception{ final WebView v = new WebView(); final Path p = Paths.get("ace","editor.html"); s.setScene(new Scene(v)); v.getEngine().load(p.toUri().toURL().toString()); s.show(); } }
一見問題なさそうに見えます。が、コピー&ペーストができません。
そして、何よりも問題なのは、マウスクリックしていると、突然不意に落ちること。
残されたログを見ても、やっぱりマウスイベントで落ちているようです。
JRE8u45でも試してみましたが、結果は同じでした。
むろん、これをFirefoxやChromeで動かしても特に問題は起こりません。
コピペが出来ないだけだったら、JavaScriptを駆使して何とかなるかなとか思ってたんですが、JVMごとクラッシュするとなると流石にどうもならない。
これがAceだけに限る問題なのか、WebViewそのものの問題なのか、ちょっと判断がつきませんが、WebViewもまだまだ不安定なんだなと思い知らされました。
バグレポート?めんどくせ
一応検索用にエラーコード貼り付け。
# # A fatal error has been detected by the Java Runtime Environment: # # EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x0000000000000000, pid=7052, tid=6804 # # JRE version: Java(TM) SE Runtime Environment (8.0_40-b25) (build 1.8.0_40-b25) # Java VM: Java HotSpot(TM) 64-Bit Server VM (25.40-b25 mixed mode windows-amd64 compressed oops) # Problematic frame: # C 0x0000000000000000 # # Failed to write core dump. Minidumps are not enabled by default on client versions of Windows #