Java中的编译器在尝试解析字符串值时出乎意料地挂起,2.2250738585072012e-308加倍

Bha*_*esh 1 java

我在NetBeans 6.9.1中尝试了以下代码,它应该在控制台上显示值,但编译器出乎意料地挂断了.代码段如下.

package demo;

public class Main
{
    public static void main(String[] args) 
    {
        System.out.println("Test Demo:");
        double d = Double.parseDouble("2.2250738585072012e-308");
        //double d = Double.parseDouble("30000.2250738585072012e-308"); Works with no hangs up.
        System.out.println("Value = " + d);
    }
}
Run Code Online (Sandbox Code Playgroud)

它可能不是Java中双倍范围的情况.如果指定的值超出范围,它应该抛出一些异常或导致一些错误,但它会挂起,而不是.究竟应该是什么原因?

Bob*_*ers 9

这是一个已知的java编译器错误,解决方案是更新到最新的JDK(在JDK 6u24之前为现有JDK发布了一个补丁,此修补程序包含在Sun/Oracle JDK 6u24中).

(编辑:添加了关于修复此问题的版本的说明)