Querz / mcaselector

A tool to select chunks from Minecraft worlds for deletion or export.
MIT License
3.17k stars 177 forks source link

mcaselector fails to save screenshots #415

Closed Peregrine05 closed 1 year ago

Peregrine05 commented 1 year ago

Describe the bug mcaselector fails to save screenshot files when commanded to.

To Reproduce Steps to reproduce the behavior:

  1. Load a world.
  2. Click View.
  3. Click Save screenshot.
  4. Enter the filename and location, and click Save.

Expected behavior The screenshot should be output to the specified location, with the specified filename.

Screenshots and other files The log file is posted below; additionally, some other debug information which was output to the console and not to the log file is also posted below.

mcaselector-20230607-194840-1.log

Exception in thread "JavaFX Application Thread" java.lang.NoClassDefFoundError:
javafx/embed/swing/SwingFXUtils
        at net.querz.mcaselector.ui.DialogHelper.screenshot(DialogHelper.java:33
6)
        at net.querz.mcaselector.ui.component.OptionBar.lambda$new$14(OptionBar.
java:164)
        at javafx.base/com.sun.javafx.event.CompositeEventHandler.dispatchBubbli
ngEvent(CompositeEventHandler.java:86)
        at javafx.base/com.sun.javafx.event.EventHandlerManager.dispatchBubbling
Event(EventHandlerManager.java:234)
        at javafx.base/com.sun.javafx.event.EventHandlerManager.dispatchBubbling
Event(EventHandlerManager.java:191)
        at javafx.base/com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(B
asicEventDispatcher.java:58)
        at javafx.base/com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent
(EventDispatchChainImpl.java:114)
        at javafx.base/com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.ja
va:74)
        at javafx.base/com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:4
9)
        at javafx.base/javafx.event.Event.fireEvent(Event.java:198)
        at javafx.controls/javafx.scene.control.MenuItem.fire(MenuItem.java:459)

        at javafx.controls/com.sun.javafx.scene.control.ContextMenuContent$MenuI
temContainer.doSelect(ContextMenuContent.java:1385)
        at javafx.controls/com.sun.javafx.scene.control.ContextMenuContent$MenuI
temContainer.lambda$createChildren$12(ContextMenuContent.java:1338)
        at javafx.base/com.sun.javafx.event.CompositeEventHandler$NormalEventHan
dlerRecord.handleBubblingEvent(CompositeEventHandler.java:247)
        at javafx.base/com.sun.javafx.event.CompositeEventHandler.dispatchBubbli
ngEvent(CompositeEventHandler.java:80)
        at javafx.base/com.sun.javafx.event.EventHandlerManager.dispatchBubbling
Event(EventHandlerManager.java:234)
        at javafx.base/com.sun.javafx.event.EventHandlerManager.dispatchBubbling
Event(EventHandlerManager.java:191)
        at javafx.base/com.sun.javafx.event.CompositeEventDispatcher.dispatchBub
blingEvent(CompositeEventDispatcher.java:59)
        at javafx.base/com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(B
asicEventDispatcher.java:58)
        at javafx.base/com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent
(EventDispatchChainImpl.java:114)
        at javafx.base/com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(B
asicEventDispatcher.java:56)
        at javafx.base/com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent
(EventDispatchChainImpl.java:114)
        at javafx.base/com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(B
asicEventDispatcher.java:56)
        at javafx.base/com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent
(EventDispatchChainImpl.java:114)
        at javafx.base/com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(B
asicEventDispatcher.java:56)
        at javafx.base/com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent
(EventDispatchChainImpl.java:114)
        at javafx.base/com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.ja
va:74)
        at javafx.base/com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:5
4)
        at javafx.base/javafx.event.Event.fireEvent(Event.java:198)
        at javafx.graphics/javafx.scene.Scene$MouseHandler.process(Scene.java:38
97)
        at javafx.graphics/javafx.scene.Scene.processMouseEvent(Scene.java:1878)

        at javafx.graphics/javafx.scene.Scene$ScenePeerListener.mouseEvent(Scene
.java:2623)
        at javafx.graphics/com.sun.javafx.tk.quantum.GlassViewEventHandler$Mouse
EventNotification.run(GlassViewEventHandler.java:411)
        at javafx.graphics/com.sun.javafx.tk.quantum.GlassViewEventHandler$Mouse
EventNotification.run(GlassViewEventHandler.java:301)
        at java.base/java.security.AccessController.doPrivileged(AccessControlle
r.java:399)
        at javafx.graphics/com.sun.javafx.tk.quantum.GlassViewEventHandler.lambd
a$handleMouseEvent$2(GlassViewEventHandler.java:450)
        at javafx.graphics/com.sun.javafx.tk.quantum.QuantumToolkit.runWithoutRe
nderLock(QuantumToolkit.java:424)
        at javafx.graphics/com.sun.javafx.tk.quantum.GlassViewEventHandler.handl
eMouseEvent(GlassViewEventHandler.java:449)
        at javafx.graphics/com.sun.glass.ui.View.handleMouseEvent(View.java:557)

        at javafx.graphics/com.sun.glass.ui.View.notifyMouse(View.java:943)
        at javafx.graphics/com.sun.glass.ui.win.WinApplication._runLoop(Native M
ethod)
        at javafx.graphics/com.sun.glass.ui.win.WinApplication.lambda$runLoop$3(
WinApplication.java:184)
        at java.base/java.lang.Thread.run(Thread.java:833)
Caused by: java.lang.ClassNotFoundException: javafx.embed.swing.SwingFXUtils
        at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinCla
ssLoader.java:641)
        at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(C
lassLoaders.java:188)
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520)
        ... 43 more

Environment:

Querz commented 1 year ago

Did you use the installer or are you running the jar file? I am not able to reproduce this issue.

Peregrine05 commented 1 year ago

I used the JAR file.

Peregrine05 commented 1 year ago

The issue is resolved. Upon reading the instructions, I saw that I had failed to add all of the JavaFX modules in the startup command. Adding all of them with ALL-MODULE-PATH fixed the issue. (Previously, it had been javafx.controls,javafx.fxml.)