我们有一个基于Eclipse的Java应用程序(主类实现IApplication
),它是从Windows命令行启动的。 它在System.out
上的输出不可见/打印到启动它的命令窗口中。 尽pipe如此,当输出pipe道more
,输出也很好。 怎么来的?
例如,考虑helloworld.exe
。 在命令窗口中运行C:\>helloworld.exe
时,应用程序将简单地返回。 但是在运行C:\>helloworld.exe | more
C:\>helloworld.exe | more
,屏幕显示
C:> helloworld.exe | 更多
你好,世界
- 使用batch file计数文件
- 批处理脚本:为什么打印“=而不是空string?
- ShellExecute cmd提示符与特定的工作目录
- Windows批处理:Commmand未识别
- 嵌套for循环,设置variables,如果其他批处理脚本
C:>
在Linux上,输出很好。 如何在Windows上查看输出?
一些要求的信息:
System.out.prinln("xxx");
简单调用System.out.prinln("xxx");
1.8.0_60
,Eclipse 3.6.2
>std.txt 2>err.txt
显示输出确实在stdout上。 .ini
文件如下
--launcher.suppressErrors -vmargs -Xms256m -Xmx4096m -Djava.naming.factory.initial=com.sun.jndi.fscontext.RefFSContextFactory -Djava.library.path=plugins
也许这个问题是相关的?
您可以使用equinox启动程序启动基于Eclipse RCP的应用程序,如下所示:
java -jar plugins/org.eclipse.equinox.launcher_1.1.1.R36x_v20101122_1400.jar
当然,你必须找到你在RCP应用程序中使用的正确版本的春分启动程序。
这样你会看到控制台日志。
你可以在这里阅读更多关于它: http : //wiki.eclipse.org/index.php/Starting_Eclipse_Commandline_With_Equinox_Launcher
编辑:当您使用基于eclipse.exe的启动程序时,无法获取控制台日志的原因是,因为在Windows上的eclipse.exe产生了一个单独的进程,这将导致另一个命令提示符窗口。
如果你的应用程序是通过eclipse.exe
启动的(没有控制台附加到它)改变调用使用eclipsec.exe
(有一个控制台附加到它,注意应用程序名称中的c
)。
你最好使用一个框架来处理你的日志,如logback
这是更便携和可维护。
在你的例子中,似乎你已经从你的java代码创建了一个exe文件。 我的猜测是你用来创建exe文件的打包程序对输出目标做了一些修改,因为它是你的java程序的一个包装。 尝试创建一个jar,然后尝试执行java -jar helloworld.jar。
字符串是stderr而不是stdout? (或其他方式取决于你的预期行为)。