Home > Archives > 2007年01月13日

2007年01月13日

Fortress@Windows は要修正

Windows 環境で Fortress 動かそうとしたら二回目の実行でこけることが判明.何が悪いのかとエラーメッセージを見てみたら,ライブラリの AST (FortressLibrary.jst) の読み込みに失敗しているらしい.まだまだ開発途中らしくライブラリのソースをパースした AST を *.jst に吐き出しておいて,次回以降の実行で再利用する仕様らしい.この*.jst には元のソースのファイル名も出力されるのだが,このファイル名が少々問題となっていた.

具体的には, Windows のファイル名には \ が含まれるため,パースに失敗する.解決としては \ をちゃんとエスケープすればいい.ライブラリの読み込みの処理を追っていくと

 com.sun.fortress.interpreter.driver
 com.sun.fortress.interpreter.nodes

あたりのクラスが関係していて

 Libraries#link -> Driver#writeJavaAst -> Printer#dumpSpan -> Span#appendTo -> SourceLoc#getFileName 

となっている.SourceLoc#getFileName の返すファイル名を Span#appendTo が出力しているので,この部分でエスケープをいれてやればいいはず.ということで,

            w.append("\"");
            // Need to add escapes to the file name
            w.append(begin.getFileName());
            w.append("\"");
            w.append(",");

            w.append("\"");
            // Need to add escapes to the file name
            w.append(begin.getFileName().replaceAll("\\\\", "\\\\\\\\"));
            w.append("\"");
            w.append(",");

にしてやってとりあえずの問題解決を図った.

Home > Archives > 2007年01月13日

Search
Feeds

Page Top