我正在使用Apache Derby数据库构建桌面应用程序。当我从Netbeans运行应用程序时,它工作正常,但是当我运行应用程序的可执行jar文件时,我得到一个“java.lang.ExceptionInInitializerError”“引起:java.lang.IllegalStateException:试图在关闭时执行操作EntityManager的“。
通过右键单击Netbeans中的项目并单击“清理并生成”来创建jar文件。
我查看了以下资源,但信息不适用:
这是我第一次使用Derby,所以我可能很遗憾。
堆栈追踪:
java.lang.ExceptionInInitializerError
at myProject.Main.start(Main.java:70)
at javafx.graphics/com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$9(Unknown Source)
at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runAndWait$11(Unknown Source)
at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$9(Unknown Source)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$10(Unknown Source)
at javafx.graphics/com.sun.glass.ui.InvokeLaterDispatcher$Future.run(Unknown Source)
at javafx.graphics/com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
at javafx.graphics/com.sun.glass.ui.win.WinApplication.lambda$runLoop$3(Unknown Source)
at java.base/java.lang.Thread.run(Unknown Source)
Caused by: java.lang.IllegalStateException: Attempting to execute an operation on a closed EntityManager.
at org.eclipse.persistence.internal.jpa.EntityManagerImpl.verifyOpenWithSetRollbackOnly(EntityManagerImpl.java:1923)
at org.eclipse.persistence.internal.jpa.QueryImpl.getSingleResult(QueryImpl.java:508)
at org.eclipse.persistence.internal.jpa.EJBQueryImpl.getSingleResult(EJBQueryImpl.java:400)
at graphics.view.Read.<clinit>(Read.java:50)
... 10 more
答案 0 :(得分:0)
事实证明,我在代码中犯了一个(非常)愚蠢的错误。在我在查询中调用getSingleResult()之前,我关闭了在行中进行查询的EntityManager。当我从Netbeans运行它时,我不太清楚为什么程序有效,但问题现在已经解决了。