【问题标题】:Why doesn't the Application finish?为什么应用程序没有完成?
【发布时间】:2016-03-03 08:40:49
【问题描述】:

我使用来自 IntelliJ 的 Gradle 插件 application 和任务 run 运行这个主类。我可以运行它并调试它,但程序没有完成。这意味着,它在 IntelliJ 中看起来程序仍在运行,但我在调试模式下看到它离开了 main() 方法。

可能是什么原因?

代码:

public class HibernateTest {

    public static EntityManagerFactory entityManagerFactory;
    public static void main(String[] args) {
        System.out.println("TEST");
        EntityManager entityManager;
        try {
            setUp();

            entityManager = entityManagerFactory.createEntityManager();
            entityManager.getTransaction().begin();
            entityManager.persist( new Person( "Jim" ) );
            entityManager.persist( new Person( "Tim") );
            entityManager.getTransaction().commit();
            entityManager.close();

        } catch (Exception e) {
            e.printStackTrace();
        } finally {

        }

        System.out.println("Finished");
    }

    protected static void setUp() throws Exception {
        entityManagerFactory = Persistence.createEntityManagerFactory( "vwg.vw.hrit.HibernateTest" );
    }
} 

IntelliJ 屏幕:

【问题讨论】:

    标签: java hibernate intellij-idea gradle


    【解决方案1】:

    你应该写:

    entityManagerFactory.close();
    

    这将使您的 entityManager 也被视为已关闭: https://docs.oracle.com/javaee/7/api/javax/persistence/EntityManagerFactory.html#close--

    【讨论】:

      【解决方案2】:

      还有一个非守护线程在运行。

      使用 jstack 附加到正在运行的进程以进行线程转储或要求您的 IDE 执行此操作。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-08-28
        • 1970-01-01
        • 1970-01-01
        • 2019-11-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多