Exception或者Error都是继承了Throwable类保持了一组StackTrace的堆栈信息,每个StackTrace元素保持该层的ClassName,MethodName,FileName,LineNumber等数据。调用Throwable.printStackTrace()返回Unknown Source,这时LineNumber是负数-3,-4等。比如下面:
at org.eclipse.ui.internal.ide.IDEApplication.run(Unknown Source)
at org.eclipse.core.internal.runtime.PlatformActivator$1.run(Unknown Source)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:273)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:129)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)Unknown Source在什么情况下会出现,为什么会出现找不到源代码行号的情况。
我现在在自己写的一些类中会出现错误堆栈出现Unknown Source的情况,很是郁闷啊!

解决方案 »

  1.   

    Unknown Source是指 org.eclipse.ui.internal.ide.IDEApplication.run
    类,对你说不重要,重要的是的程序的行数
      

  2.   

    主要你的IDE环境和你代码关联起来,所以找不到出错的代码行.
      

  3.   

    IDE环境和这个行号完全没任何联系吧?我写一个简单的类,里面在第9行会抛出一个异常,只复制了class文件到jre/bin目录。它一样能打印出这个异常在第9行。class文件在编译以后已经包含了足够的源代码行信息,在虚拟机运行时,不会和源代码有所关联的。所以应该不会是主要你的IDE环境和你代码关联起来,所以找不到出错的代码行.这样的。C:\Program Files\Java\jre1.6.0_07\bin>java -version
    java version "1.6.0_07"
    Java(TM) SE Runtime Environment (build 1.6.0_07-b06)
    Java HotSpot(TM) Client VM (build 10.0-b23, mixed mode, sharing)C:\Program Files\Java\jre1.6.0_07\bin>java Test
    java.lang.Exception
            at Test.main(Test.java:9)C:\Program Files\Java\jre1.6.0_07\bin>不知道在什么情况下能够出现堆栈信息出现Unknown Source的堆栈行。
      

  4.   


    呵呵,不是debug的事情。我在写一个日志管理模块,打印异常时会把错误行附近的源代码(比如错误行上下10行的内容)也进行记录。这些源代码通常是用户自定义的脚本。所以需要看看上下文相关引用。但是现在stacktrace的行号信息有时候就出现unknown source,导致这些源代码信息无法获取记录,比较郁闷的说。