java堆栈跟踪中的波浪号(〜)是什么意思?

时间:2015-10-20 22:05:00

标签: java stack-trace

我注意到在堆栈跟踪中的jar名称之前,在开始方括号之前有波形符。它们总是从堆栈轨迹的顶部发生到一定深度。即使是相同的迹线也可能具有以不同堆叠迹线深度结束的波浪。这些代字号表示什么?

at org.hibernate.engine.internal.Nullability.checkNullability(Nullability.java:106) ~[hibernate-core-4.3.11.Final.jar:4.3.11.Final]
at org.hibernate.action.internal.AbstractEntityInsertAction.nullifyTransientReferencesIfNotAlready(AbstractEntityInsertAction.java:132) ~[hibernate-core-4.3.11.Final.jar:4.3.11.Final]
at org.hibernate.action.internal.AbstractEntityInsertAction.makeEntityManaged(AbstractEntityInsertAction.java:141) ~[hibernate-core-4.3.11.Final.jar:4.3.11.Final]
at org.hibernate.engine.spi.ActionQueue.addResolvedEntityInsertAction(ActionQueue.java:203) ~[hibernate-core-4.3.11.Final.jar:4.3.11.Final]
at org.hibernate.engine.spi.ActionQueue.addInsertAction(ActionQueue.java:181) ~[hibernate-core-4.3.11.Final.jar:4.3.11.Final]
at org.hibernate.engine.spi.ActionQueue.addAction(ActionQueue.java:168) ~[hibernate-core-4.3.11.Final.jar:4.3.11.Final]
at org.hibernate.event.internal.AbstractSaveEventListener.addInsertAction(AbstractSaveEventListener.java:342) ~[hibernate-core-4.3.11.Final.jar:4.3.11.Final]
at org.hibernate.event.internal.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:289) ~[hibernate-core-4.3.11.Final.jar:4.3.11.Final]
at org.hibernate.event.internal.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:195) ~[hibernate-core-4.3.11.Final.jar:4.3.11.Final]
at org.hibernate.event.internal.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:138) ~[hibernate-core-4.3.11.Final.jar:4.3.11.Final]
at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:209) ~[hibernate-core-4.3.11.Final.jar:4.3.11.Final]
at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:194) ~[hibernate-core-4.3.11.Final.jar:4.3.11.Final]
at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.performSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:114) ~[hibernate-core-4.3.11.Final.jar:4.3.11.Final]
at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:90) ~[hibernate-core-4.3.11.Final.jar:4.3.11.Final]
at org.hibernate.internal.SessionImpl.fireSaveOrUpdate(SessionImpl.java:684) ~[hibernate-core-4.3.11.Final.jar:4.3.11.Final]
at org.hibernate.internal.SessionImpl.saveOrUpdate(SessionImpl.java:676) ~[hibernate-core-4.3.11.Final.jar:4.3.11.Final]
at org.hibernate.engine.spi.CascadingActions$5.cascade(CascadingActions.java:235) ~[hibernate-core-4.3.11.Final.jar:4.3.11.Final]
at org.hibernate.engine.internal.Cascade.cascadeToOne(Cascade.java:350) ~[hibernate-core-4.3.11.Final.jar:4.3.11.Final]
at org.hibernate.engine.internal.Cascade.cascadeAssociation(Cascade.java:293) ~[hibernate-core-4.3.11.Final.jar:4.3.11.Final]
at org.hibernate.engine.internal.Cascade.cascadeProperty(Cascade.java:161) ~[hibernate-core-4.3.11.Final.jar:4.3.11.Final]
at org.hibernate.engine.internal.Cascade.cascadeCollectionElements(Cascade.java:379) ~[hibernate-core-4.3.11.Final.jar:4.3.11.Final]
at org.hibernate.engine.internal.Cascade.cascadeCollection(Cascade.java:319) ~[hibernate-core-4.3.11.Final.jar:4.3.11.Final]
at org.hibernate.engine.internal.Cascade.cascadeAssociation(Cascade.java:296) ~[hibernate-core-4.3.11.Final.jar:4.3.11.Final]
at org.hibernate.engine.internal.Cascade.cascadeProperty(Cascade.java:161) ~[hibernate-core-4.3.11.Final.jar:4.3.11.Final]
at org.hibernate.engine.internal.Cascade.cascade(Cascade.java:118) ~[hibernate-core-4.3.11.Final.jar:4.3.11.Final]
at org.hibernate.event.internal.AbstractSaveEventListener.cascadeAfterSave(AbstractSaveEventListener.java:470) ~[hibernate-core-4.3.11.Final.jar:4.3.11.Final]
at org.hibernate.event.internal.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:295) ~[hibernate-core-4.3.11.Final.jar:4.3.11.Final]
at org.hibernate.event.internal.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:195) ~[hibernate-core-4.3.11.Final.jar:4.3.11.Final]
at org.hibernate.event.internal.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:138) ~[hibernate-core-4.3.11.Final.jar:4.3.11.Final]
at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:209) ~[hibernate-core-4.3.11.Final.jar:4.3.11.Final]
at org.hibernate.event.internal.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:55) ~[hibernate-core-4.3.11.Final.jar:4.3.11.Final]
at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:194) ~[hibernate-core-4.3.11.Final.jar:4.3.11.Final]
at org.hibernate.event.internal.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:49) ~[hibernate-core-4.3.11.Final.jar:4.3.11.Final]
at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:90) ~[hibernate-core-4.3.11.Final.jar:4.3.11.Final]
at org.hibernate.internal.SessionImpl.fireSave(SessionImpl.java:715) ~[hibernate-core-4.3.11.Final.jar:4.3.11.Final]
at org.hibernate.internal.SessionImpl.save(SessionImpl.java:707) ~[hibernate-core-4.3.11.Final.jar:4.3.11.Final]
at org.hibernate.internal.SessionImpl.save(SessionImpl.java:702) ~[hibernate-core-4.3.11.Final.jar:4.3.11.Final]
at org.library.hibernate.Hibernate.saveWithTx(Hibernate.java:758) ~[library-4.5.1.0.jar:4.5.1.0]
at org.library.hibernate.Hibernate.saveWithTx(Hibernate.java:738) ~[library-4.5.1.0.jar:4.5.1.0]
at org.library.signatureservice.signingdevices.SigningDeviceManagerImpl.addVMacSigningDevice(SigningDeviceManagerImpl.java:421) ~[library-4.5.1.0.jar:4.5.1.0]
at org.library.adminui.model.VMACDevices.saveItem(VMACDevices.java:243) ~[library-4.5.1.0.jar:4.5.1.0]
at org.library.adminui.model.VMACDevices.saveItem(VMACDevices.java:21) ~[library-4.5.1.0.jar:4.5.1.0]
at org.library.adminui.model.SignatureServerDataProvider.handleSaveItem(SignatureServerDataProvider.java:630) ~[library-4.5.1.0.jar:4.5.1.0]
at org.library.adminui.panel.ManagementPanel.saveButtonClicked(ManagementPanel.java:231) [library-4.5.1.0.jar:4.5.1.0]
at org.library.adminui.form.ManagementForm$5.onSubmit(ManagementForm.java:302) [library-4.5.1.0.jar:4.5.1.0]
at org.apache.wicket.markup.html.form.Form.delegateSubmit(Form.java:1568) [wicket-1.4.17.jar:1.4.17]
at org.apache.wicket.markup.html.form.Form.process(Form.java:960) [wicket-1.4.17.jar:1.4.17]
at org.apache.wicket.markup.html.form.Form.onFormSubmitted(Form.java:921) [wicket-1.4.17.jar:1.4.17]

我使用logback记录堆栈跟踪。

1 个答案:

答案 0 :(得分:6)

这是非标准行为 您正在运行的程序似乎正在使用LogbackLog4j或具有类似格式的其他记录器。

来自Logback layout page(强调我的):

  

在异常的每个堆栈帧的末尾,一个由jar文件组成的字符串,该jar文件包含相关的类,后跟" Implementation-Version"在那个罐子里发现的清单将被添加。 [...] 如果信息不确定,那么类包装数据将以波形符号开头,即'〜'性格。

  

Logback会竭尽全力确保它显示的类封装信息正确[...]。但是,当它无法保证信息的绝对正确性时,则会在数据前加上波形符号,即'〜'字符即可。因此,理论上印刷类包装信息可能与真实类包装信息不同。

几乎完全相同,来自Log4j layout page

  

在异常的每个堆栈元素的末尾,一个字符串,其中包含jar文件的名称,该文件包含该类所在的类或目录以及" Implementation-Version"在那个罐子里发现的清单将被添加。 如果信息不确定,那么类包装数据将以波形符号开头,即'〜'字符。

TL; DR:Tilde意味着"并非100%确定该课程来自那个罐子"。