在Java stacktraces中,行号指向何处,由没有附加源代码jar的jar中的代码抛出的异常打印

在Java stacktraces中,行号指向何处,由没有附加源代码jar的jar中的代码抛出的异常打印,java,stack-trace,Java,Stack Trace,当在没有附加源jar的jar中编译的代码引发异常时,stacktrace中的行号是指编译类中字节码语句的行号,还是指包含源代码的类中的行号,源代码的行号默认写入字节码。这使得追踪问题变得更容易。行号(和源文件)信息存储在.class文件中,并且(不一定)与附加源中的行相同。例如,如果附加了错误版本库的源,则调试时可能会显示错误的行 可以禁用此功能(例如通过将-g:none传递到javac)。禁用它将使查找和排除问题变得更加困难,但禁用它将使生成的.class更小。编译Java代码时,源代码的行号

当在没有附加源jar的jar中编译的代码引发异常时,stacktrace中的行号是指编译类中字节码语句的行号,还是指包含源代码的类中的行号,源代码的行号默认写入字节码。这使得追踪问题变得更容易。行号(和源文件)信息存储在
.class
文件中,并且(不一定)与附加源中的行相同。例如,如果附加了错误版本库的源,则调试时可能会显示错误的行


可以禁用此功能(例如通过将
-g:none
传递到
javac
)。禁用它将使查找和排除问题变得更加困难,但禁用它将使生成的
.class
更小。

编译Java代码时,源代码的行号默认写入字节码。这使得追踪问题变得更容易。行号(和源文件)信息存储在
.class
文件中,并且(不一定)与附加源中的行相同。例如,如果附加了错误版本库的源,则调试时可能会显示错误的行


可以禁用此功能(例如通过将
-g:none
传递到
javac
)。禁用此选项将使查找和排除问题变得更加困难,但禁用此选项将使生成的
.class
更小。

您是说如果某一行
抛出新异常()位于名为
Main.java
的java文件的第100行,我将该文件转换为jar文件,将其添加到项目中,然后执行语句,stacktrace中异常的行号将为100,而不是其他内容?@是的,将源代码附加到项目与,由于此信息是
.class
-file的一部分,所以您是说如果某一行
抛出新异常()位于名为
Main.java
的java文件的第100行,我将该文件转换为jar文件,将其添加到项目中,然后执行语句,stacktrace中异常的行号将为100,而不是其他内容?@是的,将源代码附加到项目与,因为此信息是
.class
-文件的一部分。