Eclipse 调试模式在数据库连接时停止

Eclipse debug mode stopping at DB connection

提问人:pmart 提问时间:8/31/2023 最后编辑:marc_spmart 更新时间:10/5/2023 访问量:81

问:

我遇到了我从未遇到过的 Eclipse 调试模式问题,并且在搜索 Web 时没有找到有关它的任何信息。

我正在开发一个部署在 Tomcat 服务器上的 Maven Web 应用程序。它使用 Hibernate。正常运行时,它工作正常,但是,在调试时,它会在此时停止:

org.hibernate.dialect.Dialect - 
Using dialect: org.hibernate.dialect.SQLServerDialect

鉴于部署在这里停止,我想它与与数据库的连接有关,我认为它在“正常”运行模式和调试之间不应该有任何不同。

我尝试切换调试配置,跳过所有断点(甚至根本不标记任何断点)等等。

我还尝试从控制台命令远程运行调试模式,但没有奏效,但即使成功了,也必须以这种方式运行它也会很痛苦。

我不确定我是否缺少配置,我尝试从其他 Eclipse 实例调试它,但我遇到了同样的问题,所以我想这取决于某些特定的配置。

如果您需要更多信息来获得更广泛的概述,请 lmk.

感谢您的帮助!

添加更多日志信息:

[main] INFO org.hibernate.cfg.Configuration - configuring from resource: /hibernate.cfg.xml
[main] INFO org.hibernate.cfg.Configuration - Configuration resource: /hibernate.cfg.xml
[main] WARN org.hibernate.util.DTDEntityResolver - recognized obsolete hibernate namespace http://hibernate.sourceforge.net/. Use namespace http://www.hibernate.org/dtd/ instead. Refer to Hibernate 3.6 Migration Guide!
[main] INFO org.hibernate.cfg.Configuration - Configured SessionFactory: HibernateSessionFactory
[main] INFO org.hibernate.cfg.HbmBinder - Mapping class: * -> *
[main] INFO org.hibernate.cfg.HbmBinder - Mapping collection: * -> *
[main] INFO org.hibernate.cfg.Configuration - Hibernate Validator not found: ignoring
[main] INFO org.hibernate.cfg.search.HibernateSearchEventListenerRegister - Unable to find org.hibernate.search.event.FullTextIndexEventListener on the classpath. Hibernate Search is not enabled.
[main] WARN org.hibernate.mapping.RootClass - composite-id class does not override equals(): *
[main] WARN org.hibernate.mapping.RootClass - composite-id class does not override hashCode(): *
[main] INFO org.hibernate.connection.ConnectionProviderFactory - Initializing connection provider: org.hibernate.connection.C3P0ConnectionProvider
[main] INFO org.hibernate.connection.C3P0ConnectionProvider - C3P0 using driver: com.microsoft.sqlserver.jdbc.SQLServerDriver at URL: ******
[main] INFO org.hibernate.connection.C3P0ConnectionProvider - Connection properties: {password=****, user=****}
[main] INFO org.hibernate.connection.C3P0ConnectionProvider - autocommit mode: false
[main] INFO org.hibernate.dialect.Dialect - Using dialect: org.hibernate.dialect.SQLServerDialect

它只是停在那里。


我期望的延续(取自正常运行模式)是这样的:

[main] INFO org.hibernate.engine.jdbc.JdbcSupportLoader - Disabling contextual LOB creation as createClob() method threw error : java.lang.reflect.InvocationTargetException
[main] INFO org.hibernate.cfg.SettingsFactory - Database ->
    ***
[main] INFO org.hibernate.cfg.SettingsFactory - Driver ->
    ***
[main] INFO org.hibernate.transaction.TransactionFactoryFactory - Using default transaction strategy (direct JDBC transactions)
[main] INFO org.hibernate.transaction.TransactionManagerLookupFactory - No TransactionManagerLookup configured (in JTA environment, use of read-write or transactional second-level cache is not recommended)
...

(基本上它连接到数据库并开始查询)。

Java Eclipse Hibernate 调试 Web 应用程序

评论

0赞 Arun Sudhakaran 8/31/2023
你能分享启动日志吗?
0赞 pmart 8/31/2023
你是说我分享的那行之前的日志吗?还是位于 /metadata 上的 Eclipse 启动日志?
0赞 Arun Sudhakaran 8/31/2023
是,应用程序启动的日志
0赞 pmart 8/31/2023
我正在将其添加到主要帖子中。
0赞 Arun Sudhakaran 8/31/2023
你有任何断点吗?.Window -> Show view -> Breakpoints

答:

1赞 pmart 9/19/2023 #1

在同事的帮助下,我设法解决了这个问题。由于我们无法在网上找到问题的答案,我将其发布在这里以帮助任何可能遇到相同问题的人。 我们发现部署的 Tomcat 服务器 (9.0) 使用的是 Eclipse 的默认 JRE 配置,在我的情况下是 17(使用 Eclipse 2023-06 (4.28.0))。

每当我设置新的工作区时,我都会将构建级别更改为 1.8,但似乎服务器使用的是默认的 Eclipse 2023 编译级别,即 17。

从头开始创建一个新服务器并强制它使用外部 JRE (1.8) 就可以了。

我认为这与 Hibernate 有关,因为我在其他项目中没有遇到过类似的问题,我当然可以在调试中运行而不会出现任何问题。

如果有人知道它为什么起作用,请随时提供更多信息。

提前致谢!