Hey All!

I am trying to use an embedded Derby database in my platform application, but cannot get it to work. I have worked through the CRUD tutorial <https://platform.netbeans.org/tutorials/nbm-crud.html> using the sample Derby database and it works flawlessly. However, when I try to do this with my embedded database, it blows up.

After I add my viewer window, run the application, and the window shows up as expected. Then, when I start adding in the persistence/database access code, I get the following error:

A java.lang.IllegalStateException exception has occurred.
    Click Show Details or see the messages.log file located in your /home/sean/NetBeansProjects/TestDBApp/build/testuserdir/var/log folder.

This is accompanied by this stacktrace:

java.lang.IllegalStateException: Cannot find TopComponent with preferredID CustomerViewerTopComponent, see IDE log for more details.     at org.openide.windows.OpenComponentAction.actionPerformed(OpenComponentAction.java:69)     at org.openide.awt.AlwaysEnabledAction$1.run(AlwaysEnabledAction.java:174)
    at org.openide.util.actions.ActionInvoker$1.run(ActionInvoker.java:70)
    at org.openide.util.actions.ActionInvoker.doPerformAction(ActionInvoker.java:91)     at org.openide.util.actions.ActionInvoker.invokeAction(ActionInvoker.java:74)     at org.openide.awt.AlwaysEnabledAction.actionPerformed(AlwaysEnabledAction.java:177)     at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)     at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)     at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)     at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
    at javax.swing.AbstractButton.doClick(AbstractButton.java:376)
    at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:842)     at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:886)
    at java.awt.Component.processMouseEvent(Component.java:6539)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
    at java.awt.Component.processEvent(Component.java:6304)
    at java.awt.Container.processEvent(Container.java:2239)
    at java.awt.Component.dispatchEventImpl(Component.java:4889)
    at java.awt.Container.dispatchEventImpl(Container.java:2297)
    at java.awt.Component.dispatchEvent(Component.java:4711)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4904)     at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4535)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4476)
    at java.awt.Container.dispatchEventImpl(Container.java:2283)
    at java.awt.Window.dispatchEventImpl(Window.java:2746)
    at java.awt.Component.dispatchEvent(Component.java:4711)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:760)
    at java.awt.EventQueue.access$500(EventQueue.java:97)
    at java.awt.EventQueue$3.run(EventQueue.java:709)
    at java.awt.EventQueue$3.run(EventQueue.java:703)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)     at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:84)
    at java.awt.EventQueue$4.run(EventQueue.java:733)
    at java.awt.EventQueue$4.run(EventQueue.java:731)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:730)
    at org.netbeans.core.TimableEventQueue.dispatchEvent(TimableEventQueue.java:136) [catch] at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)     at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)     at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)     at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

I commented out all of the code that I placed in the constructor of the CustomerViewerTopComponent, then started adding back the code, one line at a time. This exception is actually thrown at the very first line:

EntityManager entityManager = Persistence.createEntityManagerFactory("CustomerLibraryPU").createEntityManager();

I have all appropriate imports, and my annotations are as follows:

@ConvertAsProperties(
        dtd = "-//com.pekinsoft.nwind.db.customer.viewer//CustomerViewer//EN",
        autostore = false
)
@TopComponent.Description(
        preferredID = "CustomerViewerTopComponent",
        iconBase = "com/pekinsoft/nwind/db/customer/viewer/customers16.png",
        persistenceType = TopComponent.PERSISTENCE_ALWAYS
)
@TopComponent.Registration(mode = "explorer", openAtStartup = false)
@ActionID(category = "Window", id = "com.pekinsoft.nwind.db.customer.viewer.CustomerViewerTopComponent")
@ActionReference(path = "Menu/Window/Administration" /*, position = 333 */)
@TopComponent.OpenActionRegistration(
        displayName = "#CTL_CustomerViewerAction",
        preferredID = "CustomerViewerTopComponent"
)
@Messages({
    "CTL_CustomerViewerAction=CustomerViewer",
    "CTL_CustomerViewerTopComponent=CustomerViewer Window",
    "HINT_CustomerViewerTopComponent=This is a CustomerViewer window"
})

As can clearly be seen, the preferredID = "CustomerViewerTopComponent" is present...twice, to be exact, as generated by the Window wizard.

My next step was, since I had only created the tables and they were empty, was to add a test record into my CUSTOMERS table, thinking that maybe this was due to there not being any data in the table. However, I still received this exception.

My Persistence Unit is defined with the following connection string: jdbc:derby:testdb;create=true;

I am using Oracle Java 8, NetBeans 12.0 (64-bit) for both. I am running on MX Linux with a CORE i7 (7th Gen), 8GiB of RAM, 1TB HDD. All kernel updates are in place and at version:

uname -a: Linux omen 4.19.0-12-amd64 #1 SMP Debian 4.19.152-1 (2020-10-18) x86_64 GNU/Linux

I am at a loss as to why this is not working and am wondering if it is just that the embedded Derby database is not working with NB12.0 for some reason. Any help anyone can provide is greatly appreciated. Thank you all in advance.

Sean C.

Reply via email to