我们有一个基于Eclipse的Java应用程序(主类实现IApplication
)是从Windows命令行启动。它的输出System.out
不可见/打印到启动它的命令窗口中。尽管如此,当将输出管道输送到more
时,输出仍然正常。怎么来的?输出应用的
例如,考虑helloworld.exe
。在命令窗口中运行C:\>helloworld.exe
时,应用程序会简单地返回。但运行时C:\>helloworld.exe | more
,屏幕显示
C:> helloworld.exe |更
的hello world
C:>
在Linux上,输出是罚款。如何在Windows上查看输出?
一些reqested信息:
- 的应用是相当大的。我可能无法削减它。输出是简单的通话
System.out.prinln("xxx");
- Java版本
1.8.0_60
,Eclipse的3.6.2
- 使用
>std.txt 2>err.txt
显示输出确实是在标准输出上。 - 行结束CR/LF
的.ini
文件如下
--launcher.suppressErrors
-vmargs
-Xms256m
-Xmx4096m
-Djava.naming.factory.initial=com.sun.jndi.fscontext.RefFSContextFactory
-Djava.library.path=plugins
也许this issue有关?
向我们展示创建输出的代码部分。你的可执行文件旁边有一个helloworld._ini吗?哪个java版本?哪个日食版? – Marged
'更多'可能会更加宽松的行结尾。也许你只有'\ r'或'\ n'。使用'...> out.txt 2> err.txt'来检查与NotePad ++等程序员编辑器的结尾。也许'flush()'可能需要,因为没有println完成, –
我曾经有一个基于Eclipse 3.x的现成应用程序有类似的问题。当我使Eclipse使用java.exe而不是javaw.exe时,我只能看到Eclipse和底层插件的输出。但是这样做的缺点是从图标调用程序时总是显示额外的控制台窗口。除此之外,我们还创建了一个基于Java的包装器应用程序(有点矫枉过正;-)),它调用eclipse并显式设置传入和传出流以读取stdout和stderr输出。 – Marged