3

javaでtypescriptファイルをコンパイルしようとしています。

エラーのある「.ts」ファイルを次に示します。

alert("hello, typescript");
errrrrrrrrrrrrrrrrrrrrrrrrrror

Windows シェル (cmd) でコンパイルすると:

tsc hello.ts

次のメッセージでエラーが報告されます。

E:/WORKSPACE/test/typescripts/hello.ts(2,0): The name 'errrrrrrrrrrrrrrrrrrrrrrrrror' 
does not exist in the current scope

しかし、Javaでそれを行うと:

String cmd = "cmd /C tsc hello.ts";
Process p = Runtime.getRuntime().exec(cmd);
String out = IOUtils.toString(p.getInputStream());
String error = IOUtils.toString(p.getErrorStream());
System.out.println("### out: " + out);
System.out.println("### err: " + error);

それは印刷します:

### out:
### err: E:/WORKSPACE/test/typescripts/hello.ts(2,0):

詳細エラーがキャプチャされていないことがわかります。私のコードのどこが間違っていますか?


アップデート

tsc.exeMSが提供するものにそのような問題がないことを確認しました。この質問で実行するのはtsc.cmdnpmからインストールされたものですnpm install typescript

4

2 に答える 2

2

生の Process/ProcessBuilder の組み合わせを使用してみましたか?

ProcessBuilder pb = new ProcessBuilder("cmd /C tsc hello.ts");

//merge error output with the standard output
pb.redirectErrorStream(true);

Process p = pb.start();
try (BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream(), Charset.forName("UTF-8")))) {
    String line;
    while ((line = reader.readLine()) != null) {
        System.out.println(line);
    }
}
于 2013-01-26T07:33:28.070 に答える
0

同じ問題を追跡するのに数時間費やしました。

最後に"2> errorfile.txt"、コマンドラインに追加することで回避しました。これにより、ファイルにリダイレクトされ、stderrそのファイルを読み取って印刷します。

于 2013-06-05T02:29:48.903 に答える