I get the following error opening a Sentinel-2 zip file. This is a fresh install, followed by update of SNAP 2.0 with sentinel 1 and sentinel 2 plugins enabled.
java.lang.NullPointerException
at org.esa.s2tbx.dataio.VirtualDirEx$VirtualDirWrapper.getBasePath(VirtualDirEx.java:278)
at org.esa.s2tbx.dataio.VirtualDirEx.listAll(VirtualDirEx.java:166)
at org.esa.s2tbx.dataio.VirtualDirEx$VirtualDirWrapper.listAll(VirtualDirEx.java:398)
at org.esa.s2tbx.dataio.readers.BaseProductReaderPlugIn.getDecodeQualification(BaseProductReaderPlugIn.java:70)
at org.esa.snap.rcp.actions.file.ProductOpener.lambda$getPluginsForFile$137(ProductOpener.java:259)
at java.util.Iterator.forEachRemaining(Unknown Source)
at org.esa.snap.rcp.actions.file.ProductOpener.getPluginsForFile(ProductOpener.java:258)
at org.esa.snap.rcp.actions.file.ProductOpener.openProductFilesCheckOpened(ProductOpener.java:217)
at org.esa.snap.rcp.actions.file.ProductOpener.openProduct(ProductOpener.java:178)
at org.esa.snap.rcp.actions.file.OpenProductAction.execute(OpenProductAction.java:125)
at org.esa.snap.rcp.actions.file.OpenProductAction.actionPerformed(OpenProductAction.java:110)
at org.openide.awt.AlwaysEnabledAction$1.run(AlwaysEnabledAction.java:199)
at org.openide.util.actions.ActionInvoker$1.run(ActionInvoker.java:95)
at org.openide.util.actions.ActionInvoker.doPerformAction(ActionInvoker.java:116)
at org.openide.util.actions.ActionInvoker.invokeAction(ActionInvoker.java:99)
at org.openide.awt.AlwaysEnabledAction.actionPerformed(AlwaysEnabledAction.java:202)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.AWTEventMulticaster.mouseReleased(Unknown Source)
at java.awt.AWTEventMulticaster.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$500(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
[catch] at org.netbeans.core.TimableEventQueue.dispatchEvent(TimableEventQueue.java:159)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)