gpt4 book ai didi

java - Eclipse 在用户输入时崩溃

转载 作者:搜寻专家 更新时间:2023-11-01 00:50:59 25 4
gpt4 key购买 nike

我有一个类“一”,它使用命令编译类“二”

我用这段代码运行两个

Process p2 = Runtime.getRuntime().exec("java two");
BufferedReader in = new BufferedReader(
new InputStreamReader(p2.getInputStream()) );
while ((line = in.readLine()) != null) {
System.out.println(line);
}
in.close();

现在,当“two”在其 main 方法中打印时,它工作正常并且打印在控制台中,但是当它有用户输入时 Eclipse 崩溃。当我什至删除 while 循环时,它不允许我在控制台中写入

我正在使用

创建一个新的控制台
MessageConsole console = new MessageConsole("", null);
console.activate();
ConsolePlugin.getDefault().getConsoleManager()
.addConsoles(new IConsole[] { console });
MessageConsoleStream stream = console.newMessageStream();
System.setOut(new PrintStream(stream, true));

最佳答案

我遇到了类似的问题。我扩展了 MessageConsole(只是为了能够拥有一个特定的 consolePageParticipant),并且在构造函数中我将 System.out 重定向到一个新的 MessageConsoleStream。在我的代码的第一个版本中,RCP 应用程序崩溃,在第二个版本中它挂起。

我已经不记得崩溃/挂起的代码是什么样子的,但我发现我无法在显示 MessageConsole 之前更快地重定向输出。所以我在重定向之前使用了一个新线程等待一段时间(5 秒 - 可能太多了?)。

messageConsoleStream = myConsole.newMessageStream();

new Thread(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
}
OutputStream out = new OutputStream() {
@Override
public void write(int b) throws IOException {
messageConsoleStream.write(b);
oldOut.write(b);
}
};
System.setOut(new PrintStream(out));
LOGGER.debug("'System.out' is redirected to the console."); //$NON-NLS-1$
}
}, "Redirect system out to console...").start(); //$NON-NLS-1$

改变 Thread.sleep(5000) 还是不错的;等到显示控制台...

关于java - Eclipse 在用户输入时崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17159103/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com