当前位置: 首页 > 面试题库 >

Windows下的Java控制台错误

赵锐
2023-03-14
问题内容

以下代码

System.out.println("Start");
String s = "";
//936 * 5 = 4680 characters
for (int i = 0; i < 937; i++){
    s += "1234 ";
}
System.out.println(s);
System.out.println("End");

在Windows下的Java控制台上,在“开始”和“结束”之间产生一个空行,但是在运行MacOS或Linux时可以正常工作。写入文件而不是使用sysout时同样如此。我试过多台Windows机器。我是通过eclipse还是通过cmd执行该方法都没有关系。

当您将“ 1234”更改为“ 1234”或“ 12g4”时,或者运行次数大于/小于936时,它将在所有OS上正常工作。

任何人都可以确认/有关此问题的已知错误吗?


问题答案:

我也可以在Windows
7下重现它。由于SWT中的OS,这似乎是一个限制,而且它已经存在很长时间了(2002年)。它被标记为WONTFIX。请参阅GC#drawString,drawText不能正确呈现每行超过10923个字符。因此,这是一个已知的错误。

解决方法是转到“工作区”->“首选项”->“运行/调试”->“控制台”,并将“固定宽度”控制台设置为4000个字符。这将在4000个字符之后换行,这很麻烦,但是至少您会获得所有输出。

我已经尝试过Galileo(3.5),Helios(3.6)和Indigo(3.7),并且都表现出这种行为,但奇怪的是,作为OP,Galileo和Helios的限制为818(4090个字符)和Indigo
= 936(4680)个字符说过。4090让我想到了操作系统限制(下一个限制是4090 + 5 + crlf,> 4096),它与Eclipse /
SWT中提出的错误匹配。我无法解释为什么接受的字符数有所不同。我只能建议它在操作系统中。

Eclipse中引发了许多重复的错误:

  1. 错误19850-控制台上的大字符串打印过长/消失,具体取决于长度
  2. 错误44866-在变量视图中截断长字符串
  3. 错误104588-在某些情况下控制台输出不可读

一切似乎都是由于以下原因造成的:错误11601-控制台在显示不带crlf的长字符串时挂起



 类似资料:
  • 问题内容: 我们尝试在Windows上使用Java和UTF-8。该应用程序在控制台上写入日志,我们希望对日志使用UTF-8,因为我们的应用程序具有国际化的日志。 可以配置JVM,使其使用JVM的参数生成UTF-8 。它工作正常,但Windows控制台上的输出出现乱码。 然后,我们可以将控制台的代码页设置为65001(),但是在这种情况下,文件将无法工作。这意味着当我们尝试通过脚本(名为start.

  • 问题内容: 当我尝试在控制台中打印字符串时,出现错误。我认为这是因为Windows控制台不接受仅字符。最好的办法是什么?有什么方法可以使Python自动打印?而不是在这种情况下失败? 问题答案:

  • 当我在gvm中进入grails控制台时,控制台加载时出现了几个错误。我看了其他答案,但没有提到grails和groovy的最新版本。 我运行的是LinuxMint17.1,拥有Grails3.0.3版、groovy 2.4.3版和JVM 1.8.045版。 此外,以下是加载的一些错误: 线程“thread-14”groovy中出现异常。lang.MissingPropertyException:没

  • 问题内容: 当我写一些西里尔字母的文字System.out.println(“Русскийязык”)-然后使用Windows控制台胜过此╨єёёъшщч√ъ时,该如何解决?文件编码为utf-8,但是没关系,当它是ansii或Windows-1251时,它的输出相同。 问题答案: 请注意,您可能会在输出中看到一些尾随的垃圾(我确实如此),但是如果将输出重定向到文件,则会看到这只是一个显示伪像。

  • 这是我的档案 当我尝试导出时,出现以下错误。我搜索并没有得到修复它的结果。

  • 问题内容: 通过控制台进行任何输入的数据类型(如我使用BufferedReader类所做的那样)为String。之后,我们将其类型转换为需要查询的数据类型(如Inter.parseInt()为整数)。但是在C语言中,我们可以接受任何输入原始数据类型,而在Java中,所有输入类型都是Neccerily String。为什么是这样? 问题答案: 控制台输入实际上以一系列字节而不是字符串的形式读入。这是