为什么我在下载源后在堆栈跟踪中看到未知源?

Why do I see unknown source in stack traces when I have sources downloaded?

我想深入了解异常的详细信息,我得到了 运行 单元测试,但 HSQLDB 的堆栈跟踪部分显示为 未知来源 。我正在使用 Maven,我下载了源代码和文档,我可以在 IDE.

中看到它们被正确定义

为什么我仍然会看到 未知来源

Caused by: org.hsqldb.HsqlException: incompatible data type in operation
at org.hsqldb.error.Error.error(Unknown Source)
at org.hsqldb.error.Error.error(Unknown Source)
at org.hsqldb.NumberSequence.setDefaults(Unknown Source)
at org.hsqldb.NumberSequence.<init>(Unknown Source)
at org.hsqldb.ParserTable.readColumnDefinitionOrNull(Unknown Source)
at org.hsqldb.ParserTable.readTableContentsSource(Unknown Source)
at org.hsqldb.ParserTable.compileCreateTableBody(Unknown Source)
at org.hsqldb.ParserTable.compileCreateTable(Unknown Source)
at org.hsqldb.ParserDDL.compileCreate(Unknown Source)
at org.hsqldb.ParserCommand.compilePart(Unknown Source)
at org.hsqldb.ParserCommand.compileStatements(Unknown Source)
at org.hsqldb.Session.executeDirectStatement(Unknown Source)
at org.hsqldb.Session.execute(Unknown Source)

Java 库可以使用包含源文件和行号信息的调试信息进行编译。许多库都是用这些信息编译的,但显然 HSQLDB 是在没有这些信息的情况下编译的(可能是因为这会导致 class 文件略小)。

此信息的可用性与您是否下载了源代码无关,这仅取决于库 JAR 中的 classes 是如何编译的。

查看 Maven 中专为 HSQLDB 提供的文件,似乎在您的 Maven 依赖项中使用 <classifier>debug</classifier> 可能会使用包含此调试信息的库版本。但是,我还没有验证过。