gpt4 book ai didi

java - "~[classes/:?]"字符串(或类似于 ~[?:? ])何时出现在 Java 堆栈跟踪行的末尾?

转载 作者:行者123 更新时间:2023-11-28 21:57:34 28 4
gpt4 key购买 nike

我有一个由 Java 8.0 开发并部署在 Tomcat 8.0 上的 Web 应用程序。在某些情况下,我遇到了一个我不熟悉的字符串的错误。例如,在我的一个场景中,我有一个与下面相同的错误:

Caused by: java.lang.IllegalArgumentException
at sun.reflect.GeneratedMethodAccessor6555.invoke(Unknown Source) ~[?:?]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_102]
at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_102]
at org.hibernate.property.access.spi.SetterMethodImpl.set(SetterMethodImpl.java:44) ~[hibernate-core-5.2.17.Final.jar:5.2.17.Final]
at org.hibernate.tuple.entity.AbstractEntityTuplizer.setPropertyValues(AbstractEntityTuplizer.java:649) ~[hibernate-core-5.2.17.Final.jar:5.2.17.Final]
at org.hibernate.tuple.entity.PojoEntityTuplizer.setPropertyValues(PojoEntityTuplizer.java:205) ~[hibernate-core-5.2.17.Final.jar:5.2.17.Final]
at org.hibernate.persister.entity.AbstractEntityPersister.setPropertyValues(AbstractEntityPersister.java:4745) ~[hibernate-core-5.2.17.Final.jar:5.2.17.Final]
at org.hibernate.engine.internal.TwoPhaseLoad.doInitializeEntity(TwoPhaseLoad.java:189) ~[hibernate-core-5.2.17.Final.jar:5.2.17.Final]
at org.hibernate.engine.internal.TwoPhaseLoad.initializeEntity(TwoPhaseLoad.java:128) ~[hibernate-core-5.2.17.Final.jar:5.2.17.Final]
at org.hibernate.loader.Loader.initializeEntitiesAndCollections(Loader.java:1152) ~[hibernate-core-5.2.17.Final.jar:5.2.17.Final]
at org.hibernate.loader.Loader.processResultSet(Loader.java:1011) ~[hibernate-core-5.2.17.Final.jar:5.2.17.Final]
at org.hibernate.loader.Loader.doQuery(Loader.java:949) ~[hibernate-core-5.2.17.Final.jar:5.2.17.Final]
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:341) ~[hibernate-core-5.2.17.Final.jar:5.2.17.Final]
at org.hibernate.loader.Loader.doList(Loader.java:2692) ~[hibernate-core-5.2.17.Final.jar:5.2.17.Final]
at org.hibernate.loader.Loader.doList(Loader.java:2675) ~[hibernate-core-5.2.17.Final.jar:5.2.17.Final]
at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2507) ~[hibernate-core-5.2.17.Final.jar:5.2.17.Final]
at org.hibernate.loader.Loader.list(Loader.java:2502) ~[hibernate-core-5.2.17.Final.jar:5.2.17.Final]
at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:502) ~[hibernate-core-5.2.17.Final.jar:5.2.17.Final]
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:392) ~[hibernate-core-5.2.17.Final.jar:5.2.17.Final]
at org.hibernate.engine.query.spi.HQLQueryPlan.performList(HQLQueryPlan.java:216) ~[hibernate-core-5.2.17.Final.jar:5.2.17.Final]
at org.hibernate.internal.SessionImpl.list(SessionImpl.java:1490) ~[hibernate-core-5.2.17.Final.jar:5.2.17.Final]
at org.hibernate.query.internal.AbstractProducedQuery.doList(AbstractProducedQuery.java:1445) ~[hibernate-core-5.2.17.Final.jar:5.2.17.Final]
at org.hibernate.query.internal.AbstractProducedQuery.list(AbstractProducedQuery.java:1414) ~[hibernate-core-5.2.17.Final.jar:5.2.17.Final]
at sun.reflect.GeneratedMethodAccessor8215.invoke(Unknown Source) ~[?:?]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_102]
at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_102]
... 64 more

我已经重新安装了 Java 和 Tomcat,但仍然出现此错误。有没有人有任何想法或建议?

最佳答案

对于现成的 Java,这不是正常行为。所以我们必须得出结论,这些堆栈跟踪不是由您调用 Throwable::printStacktrace()

的代码生成的

在做了一些挖掘之后,一个可能的原因是您正在使用 Logback 进行日志记录,特别是在 中使用 %xThrowable 而不是 %throwable >PatternLayout 模式。这包括堆栈跟踪中的额外打包信息以及您所看到的语法。你应该引用Logback documentation了解更多详细信息,因为模式语言中可能存在许多变体。

文档还说:

Please note that given its potential cost, computation of packaging data is disabled by default. When computation of packaging data is enabled, PatternLayout will automatically assume the %xThrowable suffix instead of %throwable suffix at the end of the pattern string.

所以后缀可能是这样做的副作用:

 <configuration packagingData="true">
...
</configuration>

在 Logback 配置中。


更新:您说您使用的是 Log4j2 而不是 Logback。

Log4j2 有一个等效的基于模式的日志布局,支持 %xThrowable;见https://logging.apache.org/log4j/2.x/manual/layouts.html

Please consider that this string appears in some stack-traces, not in all of that.

如果您的应用程序或您正在使用的某些第 3 方库在某些情况下调用 Throwable::printStacktrace 或类似的直接,并生成通过其他记录器的堆栈跟踪。

关于java - "~[classes/:?]"字符串(或类似于 ~[?:? ])何时出现在 Java 堆栈跟踪行的末尾?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56715220/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com