为什么应用程序没有完成?

时间:2016-03-03 08:40:49

标签: java hibernate intellij-idea gradle

我使用来自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屏幕:

enter image description here

2 个答案:

答案 0 :(得分:1)

你应该写:

entityManagerFactory.close();

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

答案 1 :(得分:0)

仍然有一个非守护程序线程正在运行。

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