Just saw this recommendation to use /usr/local
Should be able to try this later today.
I’m quite optimistic that this explains the problems.
Should the tutorial files and projects also live in /usr/local? Is this what the Defold/projects subfile is intended to host?
Should the tutorial files and projects also live in /usr/local? Is this what the Defold/projects subfile is intended to host?
Great question! My initial answer was “no”, but you would definitely need to keep the projects in /usr/local
because when you build a project, Defold keeps a copy of the engine in the project/.internal folder - and presumably runs it.
Dang.
A couple notes on the long CLI session text.
I tried both sudo ./RunDefold.sh
and ./RunDefold.sh
. The former error-ed out before loading the editor. The latter allowed me to select and attempt to load the SideScroller Tutorial, but had the same errors.
I included the results of an ls
command, in case there are any CHMODs you’d like me to make.
philfrei@penguin:/usr/local/Defold$ ls -al
total 1624
drwxr-x--x 1 philfrei chronos-access 212 Jun 4 11:18 .
drwxr-xr-x 1 root root 84 Jun 4 11:02 ..
-rw-r--r-- 1 philfrei philfrei 1496 May 14 11:44 config
drwxr-xr-x 1 philfrei philfrei 22 Jun 2 10:30 debugging_implementation
-rwxr--r-- 1 philfrei philfrei 1585888 May 14 11:44 Defold
-rw-r--r-- 1 philfrei philfrei 0 May 18 23:39 git
drwxr-xr-x 1 philfrei philfrei 6 Jun 3 10:10 .internal
-rw-r--r-- 1 philfrei philfrei 64801 May 14 11:44 logo_blue.png
drwxr-x--x 1 philfrei chronos-access 128 May 15 11:14 packages
drwxr-xr-x 1 philfrei philfrei 0 May 18 23:17 projects
-rwxrwxrwx 1 philfrei philfrei 93 Jun 4 11:16 RunDefold.sh
drwxr-xr-x 1 philfrei philfrei 82 Jun 4 11:03 Tutorials
drwxrwxrwx 1 philfrei chronos-access 118 Jun 3 10:07 unpacked
philfrei@penguin:/usr/local/Defold$ cat RunDefold.sh
#!/bin/bash
export DEFOLD_UNPACK_PATH="/usr/local/Defold/unpacked"
/usr/local/Defold/Defold
philfrei@penguin:/usr/local/Defold$ sudo ./RunDefold.sh
INFO:TOOLS: Launcher version d8e6e73a8efac6b9a72783027867e547b6a363e4
DEBUG:TOOLS: arg 0: /usr/local/Defold/packages/jdk-21.0.5+11/bin/java
DEBUG:TOOLS: arg 1: -cp
DEBUG:TOOLS: arg 2: /usr/local/Defold/packages/defold-d8e6e73a8efac6b9a72783027867e547b6a363e4.jar
DEBUG:TOOLS: arg 3: -Dfile.encoding=UTF-8
DEBUG:TOOLS: arg 4: -Djna.nosys=true
DEBUG:TOOLS: arg 5: -Ddefold.launcherpath=/usr/local/Defold/Defold
DEBUG:TOOLS: arg 6: -Ddefold.resourcespath=/usr/local/Defold
DEBUG:TOOLS: arg 7: -Ddefold.version=1.10.1
DEBUG:TOOLS: arg 8: -Ddefold.editor.sha1=d8e6e73a8efac6b9a72783027867e547b6a363e4
DEBUG:TOOLS: arg 9: -Ddefold.engine.sha1=d8e6e73a8efac6b9a72783027867e547b6a363e4
DEBUG:TOOLS: arg 10: -Ddefold.buildtime=2025-05-14T06:45:24.407239
DEBUG:TOOLS: arg 11: -Ddefold.channel=editor-alpha
DEBUG:TOOLS: arg 12: -Ddefold.archive.domain=d.defold.com
DEBUG:TOOLS: arg 13: -Djava.net.preferIPv4Stack=true
DEBUG:TOOLS: arg 14: -Dsun.net.client.defaultConnectTimeout=30000
DEBUG:TOOLS: arg 15: -Dsun.net.client.defaultReadTimeout=30000
DEBUG:TOOLS: arg 16: -Djogl.texture.notexrect=true
DEBUG:TOOLS: arg 17: -Dglass.accessible.force=false
DEBUG:TOOLS: arg 18: -Ddefold.schema.check.disable=true
DEBUG:TOOLS: arg 19: --add-opens=java.base/java.lang=ALL-UNNAMED
DEBUG:TOOLS: arg 20: --add-opens=java.desktop/sun.awt=ALL-UNNAMED
DEBUG:TOOLS: arg 21: --add-opens=java.desktop/sun.java2d.opengl=ALL-UNNAMED
DEBUG:TOOLS: arg 22: --add-opens=java.xml/com.sun.org.apache.xerces.internal.jaxp=ALL-UNNAMED
DEBUG:TOOLS: arg 23: --add-opens=java.base/sun.nio.fs=ALL-UNNAMED
DEBUG:TOOLS: arg 24: --add-opens=java.desktop/sun.awt.image=ALL-UNNAMED
DEBUG:TOOLS: arg 25: -Xmx2159870976
DEBUG:TOOLS: arg 26: com.defold.editor.Main
DEBUG:TOOLS: arg 27: (null)
Picked up JAVA_TOOL_OPTIONS:
Picked up _JAVA_OPTIONS:
2025-06-04 18:37:27.317 WARN default javafx - Unsupported JavaFX configuration: classes were loaded from 'unnamed module @559ca876'
No protocol specified
No protocol specified
Exception in thread "main" java.lang.UnsupportedOperationException: Unable to open DISPLAY
at com.sun.glass.ui.gtk.GtkApplication.lambda$new$5(GtkApplication.java:165)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:319)
at com.sun.glass.ui.gtk.GtkApplication.<init>(GtkApplication.java:163)
at com.sun.glass.ui.gtk.GtkPlatformFactory.createApplication(GtkPlatformFactory.java:40)
at com.sun.glass.ui.Application.run(Application.java:145)
at com.sun.javafx.tk.quantum.QuantumToolkit.startup(QuantumToolkit.java:290)
at com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:292)
at com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:162)
at com.sun.javafx.application.LauncherImpl.startToolkit(LauncherImpl.java:651)
at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:671)
at com.sun.javafx.application.LauncherImpl.lambda$launchApplication$2(LauncherImpl.java:196)
at java.base/java.lang.Thread.run(Thread.java:1583)
philfrei@penguin:
philfrei@penguin:
philfrei@penguin:
philfrei@penguin:/usr/local/Defold$ ./RunDefold.sh
INFO:TOOLS: Launcher version d8e6e73a8efac6b9a72783027867e547b6a363e4
DEBUG:TOOLS: arg 0: /usr/local/Defold/packages/jdk-21.0.5+11/bin/java
DEBUG:TOOLS: arg 1: -cp
DEBUG:TOOLS: arg 2: /usr/local/Defold/packages/defold-d8e6e73a8efac6b9a72783027867e547b6a363e4.jar
DEBUG:TOOLS: arg 3: -Dfile.encoding=UTF-8
DEBUG:TOOLS: arg 4: -Djna.nosys=true
DEBUG:TOOLS: arg 5: -Ddefold.launcherpath=/usr/local/Defold/Defold
DEBUG:TOOLS: arg 6: -Ddefold.resourcespath=/usr/local/Defold
DEBUG:TOOLS: arg 7: -Ddefold.version=1.10.1
DEBUG:TOOLS: arg 8: -Ddefold.editor.sha1=d8e6e73a8efac6b9a72783027867e547b6a363e4
DEBUG:TOOLS: arg 9: -Ddefold.engine.sha1=d8e6e73a8efac6b9a72783027867e547b6a363e4
DEBUG:TOOLS: arg 10: -Ddefold.buildtime=2025-05-14T06:45:24.407239
DEBUG:TOOLS: arg 11: -Ddefold.channel=editor-alpha
DEBUG:TOOLS: arg 12: -Ddefold.archive.domain=d.defold.com
DEBUG:TOOLS: arg 13: -Djava.net.preferIPv4Stack=true
DEBUG:TOOLS: arg 14: -Dsun.net.client.defaultConnectTimeout=30000
DEBUG:TOOLS: arg 15: -Dsun.net.client.defaultReadTimeout=30000
DEBUG:TOOLS: arg 16: -Djogl.texture.notexrect=true
DEBUG:TOOLS: arg 17: -Dglass.accessible.force=false
DEBUG:TOOLS: arg 18: -Ddefold.schema.check.disable=true
DEBUG:TOOLS: arg 19: --add-opens=java.base/java.lang=ALL-UNNAMED
DEBUG:TOOLS: arg 20: --add-opens=java.desktop/sun.awt=ALL-UNNAMED
DEBUG:TOOLS: arg 21: --add-opens=java.desktop/sun.java2d.opengl=ALL-UNNAMED
DEBUG:TOOLS: arg 22: --add-opens=java.xml/com.sun.org.apache.xerces.internal.jaxp=ALL-UNNAMED
DEBUG:TOOLS: arg 23: --add-opens=java.base/sun.nio.fs=ALL-UNNAMED
DEBUG:TOOLS: arg 24: --add-opens=java.desktop/sun.awt.image=ALL-UNNAMED
DEBUG:TOOLS: arg 25: -Xmx2159870976
DEBUG:TOOLS: arg 26: com.defold.editor.Main
DEBUG:TOOLS: arg 27: (null)
Picked up JAVA_TOOL_OPTIONS:
Picked up _JAVA_OPTIONS:
2025-06-04 18:37:48.994 WARN default javafx - Unsupported JavaFX configuration: classes were loaded from 'unnamed module @559ca876'
(java:9410): Gdk-WARNING **: 11:37:51.107: XSetErrorHandler() called with a GDK error trap pushed. Don't do that.
2025-06-04 18:37:51.674 INFO default com.defold.libs.ResourceUnpacker - not deleting old unpack dirs from /usr/local/Defold as it is not in system support path /home/philfrei/.local/state/Defold
2025-06-04 18:37:51.679 INFO default com.defold.libs.ResourceUnpacker - Already unpacked for the editor version d8e6e73a8efac6b9a72783027867e547b6a363e4
2025-06-04 18:37:51.684 INFO default com.defold.libs.ResourceUnpacker - defold.unpack.path=/usr/local/Defold/unpacked
(java:9410): Gdk-WARNING **: 11:37:51.928: XSetErrorHandler() called with a GDK error trap pushed. Don't do that.
2025-06-04 18:38:02.000 INFO default editor.updater - {:line 303, :message "Checking for updates", :url "https://d.defold.com/editor2/channels/editor-alpha/update-v4.json"}
(java:9410): Gdk-WARNING **: 11:38:02.882: XSetErrorHandler() called with a GDK error trap pushed. Don't do that.
2025-06-04 18:38:03.360 INFO default editor.updater - {:line 310, :message "No update found"}
2025-06-04 18:38:20.154 INFO default editor.boot - {:line 76, :message "Finished loading editor namespaces.", :namespace-counter 0}
2025-06-04 18:38:20.720 INFO default internal.low-memory - {:line 55, :message "Adding post-gc low-memory notification listener to tenured generation pool.", :threshold-megabytes 1854}
2025-06-04 18:38:21.482 INFO default editor.defold-project - {:line nil, :message "Initial resource sync completed in 23.91 ms"}
2025-06-04 18:38:25.945 INFO default editor.defold-project - {:line 371, :message "Cached loaded save data in system cache.", :total 40, :retained 40, :unretained 0, :limit 20000}
2025-06-04 18:38:25.947 INFO default editor.defold-project - {:line nil, :message "Project loading completed in 4.30 s"}
2025-06-04 18:38:26.195 INFO default editor.defold-project - {:line nil, :message "Project loaded", :allocated "113.45 MB"}
2025-06-04 18:38:28.082 DEBUG default org.eclipse.jgit.util.FS - readpipe [git, --version],/usr/bin
2025-06-04 18:38:28.102 ERROR default org.eclipse.jgit.util.FS - Caught exception in FS.readPipe()
java.io.IOException: Cannot run program "git" (in directory "/usr/bin"): error=13, Permission denied
at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1170)
at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1089)
at org.eclipse.jgit.util.FS.readPipe(FS.java:491)
at org.eclipse.jgit.util.FS.readPipe(FS.java:459)
at org.eclipse.jgit.util.FS.discoverGitSystemConfig(FS.java:592)
at org.eclipse.jgit.util.FS.getGitSystemConfig(FS.java:621)
at org.eclipse.jgit.util.SystemReader$Default.openSystemConfig(SystemReader.java:97)
at org.eclipse.jgit.internal.storage.file.FileRepository.<init>(FileRepository.java:176)
at org.eclipse.jgit.lib.BaseRepositoryBuilder.build(BaseRepositoryBuilder.java:580)
at org.eclipse.jgit.api.Git.open(Git.java:116)
at org.eclipse.jgit.api.Git.open(Git.java:99)
at editor.git$try_open.invokeStatic(git.clj:47)
at editor.changes_view$try_open_git.invokeStatic(changes_view.clj:145)
at editor.changes_view$make_changes_view.invokeStatic(changes_view.clj:169)
at editor.boot_open_project$load_stage_BANG_.invokeStatic(boot_open_project.clj:190)
at editor.boot_open_project$open_project_BANG_$fn__113398.invoke(boot_open_project.clj:368)
at editor.ui$do_run_now$fn__29042.invoke(ui.clj:333)
at clojure.lang.AFn.run(AFn.java:22)
at com.sun.javafx.application.PlatformImpl.lambda$runLater$10(PlatformImpl.java:456)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:400)
at com.sun.javafx.application.PlatformImpl.lambda$runLater$11(PlatformImpl.java:455)
at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95)
at com.sun.glass.ui.gtk.GtkApplication.enterNestedEventLoopImpl(Native Method)
at com.sun.glass.ui.gtk.GtkApplication._enterNestedEventLoop(GtkApplication.java:334)
at com.sun.glass.ui.Application.enterNestedEventLoop(Application.java:513)
at com.sun.glass.ui.EventLoop.enter(EventLoop.java:107)
at com.sun.javafx.tk.quantum.QuantumToolkit.enterNestedEventLoop(QuantumToolkit.java:656)
at javafx.application.Platform.enterNestedEventLoop(Platform.java:310)
at editor.fxui$mount_renderer_and_await_result_BANG_.invokeStatic(fxui.clj:375)
at editor.dialogs$make_load_project_dialog$fn__31949.invoke(dialogs.clj:435)
at editor.ui$do_run_now.invokeStatic(ui.clj:328)
at editor.dialogs$make_load_project_dialog.invokeStatic(dialogs.clj:434)
at editor.boot$open_project_with_progress_dialog.invokeStatic(boot.clj:56)
at editor.boot$select_project_from_welcome$fn__113696$fn__113697.invoke(boot.clj:88)
at editor.welcome$show_welcome_dialog_BANG_$close_dialog_and_open_project_BANG___110548.invoke(welcome.clj:620)
at editor.welcome$make_home_pane$open_selected_project_BANG___110461.invoke(welcome.clj:373)
at editor.welcome$make_home_pane$fn__110470.invoke(welcome.clj:377)
at editor.ui$fn$reify__29509.handle(ui.clj:938)
at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:86)
at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:232)
at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:189)
at com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:59)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:49)
at javafx.event.Event.fireEvent(Event.java:199)
at javafx.scene.Node.fireEvent(Node.java:8963)
at javafx.scene.control.Button.fire(Button.java:203)
at com.sun.javafx.scene.control.behavior.ButtonBehavior.mouseReleased(ButtonBehavior.java:207)
at com.sun.javafx.scene.control.inputmap.InputMap.handle(InputMap.java:274)
at com.sun.javafx.event.CompositeEventHandler$NormalEventHandlerRecord.handleBubblingEvent(CompositeEventHandler.java:247)
at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:80)
at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:232)
at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:189)
at com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:59)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:54)
at javafx.event.Event.fireEvent(Event.java:199)
at javafx.scene.Scene$MouseHandler.process(Scene.java:3987)
at javafx.scene.Scene.processMouseEvent(Scene.java:1893)
at javafx.scene.Scene$ScenePeerListener.mouseEvent(Scene.java:2711)
at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:411)
at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:301)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:400)
at com.sun.javafx.tk.quantum.GlassViewEventHandler.lambda$handleMouseEvent$2(GlassViewEventHandler.java:450)
at com.sun.javafx.tk.quantum.QuantumToolkit.runWithoutRenderLock(QuantumToolkit.java:430)
at com.sun.javafx.tk.quantum.GlassViewEventHandler.handleMouseEvent(GlassViewEventHandler.java:449)
at com.sun.glass.ui.View.handleMouseEvent(View.java:560)
at com.sun.glass.ui.View.notifyMouse(View.java:946)
at com.sun.glass.ui.gtk.GtkApplication._runLoop(Native Method)
at com.sun.glass.ui.gtk.GtkApplication.lambda$runLoop$10(GtkApplication.java:264)
at java.base/java.lang.Thread.run(Thread.java:1583)
Caused by: java.io.IOException: error=13, Permission denied
at java.base/java.lang.ProcessImpl.forkAndExec(Native Method)
at java.base/java.lang.ProcessImpl.<init>(ProcessImpl.java:295)
at java.base/java.lang.ProcessImpl.start(ProcessImpl.java:225)
at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1126)
... 82 common frames omitted
2025-06-04 18:38:28.107 DEBUG default org.eclipse.jgit.util.FS - readpipe returns null
2025-06-04 18:38:28.108 DEBUG default org.eclipse.jgit.util.FS - readpipe [git, config, --system, --edit],/usr/bin
2025-06-04 18:38:28.118 ERROR default org.eclipse.jgit.util.FS - Caught exception in FS.readPipe()
java.io.IOException: Cannot run program "git" (in directory "/usr/bin"): error=13, Permission denied
at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1170)
at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1089)
at org.eclipse.jgit.util.FS.readPipe(FS.java:491)
at org.eclipse.jgit.util.FS.discoverGitSystemConfig(FS.java:604)
at org.eclipse.jgit.util.FS.getGitSystemConfig(FS.java:621)
at org.eclipse.jgit.util.SystemReader$Default.openSystemConfig(SystemReader.java:97)
at org.eclipse.jgit.internal.storage.file.FileRepository.<init>(FileRepository.java:176)
at org.eclipse.jgit.lib.BaseRepositoryBuilder.build(BaseRepositoryBuilder.java:580)
at org.eclipse.jgit.api.Git.open(Git.java:116)
at org.eclipse.jgit.api.Git.open(Git.java:99)
at editor.git$try_open.invokeStatic(git.clj:47)
at editor.changes_view$try_open_git.invokeStatic(changes_view.clj:145)
at editor.changes_view$make_changes_view.invokeStatic(changes_view.clj:169)
at editor.boot_open_project$load_stage_BANG_.invokeStatic(boot_open_project.clj:190)
at editor.boot_open_project$open_project_BANG_$fn__113398.invoke(boot_open_project.clj:368)
at editor.ui$do_run_now$fn__29042.invoke(ui.clj:333)
at clojure.lang.AFn.run(AFn.java:22)
at com.sun.javafx.application.PlatformImpl.lambda$runLater$10(PlatformImpl.java:456)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:400)
at com.sun.javafx.application.PlatformImpl.lambda$runLater$11(PlatformImpl.java:455)
at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95)
at com.sun.glass.ui.gtk.GtkApplication.enterNestedEventLoopImpl(Native Method)
at com.sun.glass.ui.gtk.GtkApplication._enterNestedEventLoop(GtkApplication.java:334)
at com.sun.glass.ui.Application.enterNestedEventLoop(Application.java:513)
at com.sun.glass.ui.EventLoop.enter(EventLoop.java:107)
at com.sun.javafx.tk.quantum.QuantumToolkit.enterNestedEventLoop(QuantumToolkit.java:656)
at javafx.application.Platform.enterNestedEventLoop(Platform.java:310)
at editor.fxui$mount_renderer_and_await_result_BANG_.invokeStatic(fxui.clj:375)
at editor.dialogs$make_load_project_dialog$fn__31949.invoke(dialogs.clj:435)
at editor.ui$do_run_now.invokeStatic(ui.clj:328)
at editor.dialogs$make_load_project_dialog.invokeStatic(dialogs.clj:434)
at editor.boot$open_project_with_progress_dialog.invokeStatic(boot.clj:56)
at editor.boot$select_project_from_welcome$fn__113696$fn__113697.invoke(boot.clj:88)
at editor.welcome$show_welcome_dialog_BANG_$close_dialog_and_open_project_BANG___110548.invoke(welcome.clj:620)
at editor.welcome$make_home_pane$open_selected_project_BANG___110461.invoke(welcome.clj:373)
at editor.welcome$make_home_pane$fn__110470.invoke(welcome.clj:377)
at editor.ui$fn$reify__29509.handle(ui.clj:938)
at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:86)
at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:232)
at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:189)
at com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:59)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:49)
at javafx.event.Event.fireEvent(Event.java:199)
at javafx.scene.Node.fireEvent(Node.java:8963)
at javafx.scene.control.Button.fire(Button.java:203)
at com.sun.javafx.scene.control.behavior.ButtonBehavior.mouseReleased(ButtonBehavior.java:207)
at com.sun.javafx.scene.control.inputmap.InputMap.handle(InputMap.java:274)
at com.sun.javafx.event.CompositeEventHandler$NormalEventHandlerRecord.handleBubblingEvent(CompositeEventHandler.java:247)
at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:80)
at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:232)
at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:189)
at com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:59)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:54)
at javafx.event.Event.fireEvent(Event.java:199)
at javafx.scene.Scene$MouseHandler.process(Scene.java:3987)
at javafx.scene.Scene.processMouseEvent(Scene.java:1893)
at javafx.scene.Scene$ScenePeerListener.mouseEvent(Scene.java:2711)
at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:411)
at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:301)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:400)
at com.sun.javafx.tk.quantum.GlassViewEventHandler.lambda$handleMouseEvent$2(GlassViewEventHandler.java:450)
at com.sun.javafx.tk.quantum.QuantumToolkit.runWithoutRenderLock(QuantumToolkit.java:430)
at com.sun.javafx.tk.quantum.GlassViewEventHandler.handleMouseEvent(GlassViewEventHandler.java:449)
at com.sun.glass.ui.View.handleMouseEvent(View.java:560)
at com.sun.glass.ui.View.notifyMouse(View.java:946)
at com.sun.glass.ui.gtk.GtkApplication._runLoop(Native Method)
at com.sun.glass.ui.gtk.GtkApplication.lambda$runLoop$10(GtkApplication.java:264)
at java.base/java.lang.Thread.run(Thread.java:1583)
Caused by: java.io.IOException: error=13, Permission denied
at java.base/java.lang.ProcessImpl.forkAndExec(Native Method)
at java.base/java.lang.ProcessImpl.<init>(ProcessImpl.java:295)
at java.base/java.lang.ProcessImpl.start(ProcessImpl.java:225)
at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1126)
... 81 common frames omitted
2025-06-04 18:38:28.123 DEBUG default org.eclipse.jgit.util.FS - readpipe returns null
2025-06-04 18:38:28.395 INFO default util.http-server - {:line 376, :msg "Http server running", :local-url "http://localhost:36619"}
2025-06-04 18:38:28.576 ERROR default editor.lsp.server - {:line 408, :message "Language server process failed to start", :launcher {:command ["/usr/local/Defold/unpacked/x86_64-linux/bin/lsp/lua/bin/lua-language-server" "--configpath=/usr/local/Defold/unpacked/x86_64-linux/bin/lsp/lua/config.json"]}}
java.io.IOException: Cannot run program "/usr/local/Defold/unpacked/x86_64-linux/bin/lsp/lua/bin/lua-language-server" (in directory "/usr/local/Defold/Tutorials/Side scroller tutorial"): error=13, Permission denied
at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1170)
at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1089)
at editor.lsp.server$fn__34926.invokeStatic(server.clj:81)
at editor.lsp.server$fn__34926.invoke(server.clj:73)
at editor.lsp.server$fn__34911$G__34906__34918.invoke(server.clj:70)
at editor.lsp.server$make$fn__35480$state_machine__8789__auto____35499$fn__35503$fn__35525.invoke(server.clj:406)
at clojure.core.async$thread_call$fn__9040.invoke(async.clj:484)
at clojure.lang.AFn.run(AFn.java:22)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
at java.base/java.lang.Thread.run(Thread.java:1583)
Caused by: java.io.IOException: error=13, Permission denied
at java.base/java.lang.ProcessImpl.forkAndExec(Native Method)
at java.base/java.lang.ProcessImpl.<init>(ProcessImpl.java:295)
at java.base/java.lang.ProcessImpl.start(ProcessImpl.java:225)
at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1126)
... 10 common frames omitted
2025-06-04 18:38:28.601 INFO default editor.boot-open-project - {:line 372, :message "project loaded"}
That’s too bad. I saw this StackExchange post about remounting a volume to allow executables:
Not sure if it would help in your case…
Got it to work (after 8-hour debug session)!
Ok, it wasn’t all debugging, some was research on how the Chromebook VM is set up (https://ChromeOS.dev/en/linux), its security features. Some was research on mount configurations and “noexec”. Some was writing another test of Java’s ProcessBuilder
and learning to read from the getErrorStream()
. The key to solving, however, was just a total reset (delete all Defold files), followed by a new download and install, then carefully updating CHMOD for all the files in the download to match the same download to my working Ubuntu desktop Defold.
After that, I got some errors that others had (on the previous Chromebook thread) with the need to install libGLU and libopenal. The solutions to installing those are on that thread.
IDK if every one of these files needs the CHMOD change, but here is a list of what I did to get the downloaded Defold on Chromebook to match the same file to my desktop Ubuntu.
Defold (the executable) - 755
packages - 775
packages/jdk - 775
packages/jdk/bin, conf, legal, lib - directories all to 775
packages/jdk/bin/* - all to 755
packages/jdk/conf/dsp, security - both directories to 775
packages/jdk/conf/security/policy - directory to 775
packages/jdk/legal/* - all to 775
packages/lib/security, server - both directories to 775
packages/lib/jexec, jspawnhelper - both files to 755.
Probably overkill.
I encountered an additional road bump with my system when trying to do the installs for libGLU with a dpkg dependency error causing apt-get install
command to fail. It had to do with my Java 17 installation needing a headless jre. Probably not something most others will encounter. I should update to Java 21 anyway.
All right, on to actual game programming!
By the way, the Chromebook is loading and running the Defold tool at about 2 to 3 X’s the speed of my oldish desktop. So, a 2.60 second load time for “Side Scroller Tutorial” on the latter compares to 5.76 seconds on the Chromebook. I can live with that for the convenience of having an inexpensive (i.e., not a big deal if it breaks or gets stolen) laptop on my commutes.
Yay! Thank you for your persistence!
And what was the default permissions?
Did you need to set DEFOLD_UNPACK_PATH
? If so, to what?
Was these two the only missing packages/dependencies?
I was at one point toying with the idea of including a Linux launch script which would check for dependencies and suggest solution. This kind of script could be extended to also check file permissions, DEFOLD_UNPACK_PATH etc. Perhaps it might be worth adding such a script?
Having a download/install process for Defold on Chromebooks that automates the tasks I did would be nice!
I saw something where applications, like Visual Studio Code are packaged as .DEB files, which allows easy installation, and even creates a clickable start-file icon (better than having to enter the CLI and navigate to the Defold folder and type ./Defold to run). IDK about the specifics, but if it allows running a script and doing things like automatically checking for and loading dependencies, that would be pretty great.
When doing this, it would also be good if also allows for an easy update process.
libGLU and libopenal were the only two dependencies I recall having to load. I’m not clear if all Chromebooks will use the same versions of those libraries. My Debian is version 12. A previous Chromebook was Debian version 10. (Lost that one by accidentally leaving it in the back pocket of an Amtrak train seat.)
There was no need to set DEFOLD_UNPACK_PATH. I specifically checked to make sure it wasn’t set.
I didn’t make note of the permissions that were initially on the various files. Usually, if anything was missing it was a group level Write or Execute, or maybe user or “others” execute. I could download again and check if truly needed. Sometimes for such occasions, it’s “cheaper” to just make a change than to test for whether to make the change and then make it, especially since the making the change costs almost the same as testing.
Some of my files were given the chown setting of philfrei:chronos-access
. I had no part in creating the group chronos-access, and on my Ubuntu-desktop installation, all the files were philfrei:philfrei
(I’m pretty sure, I’d have to verify). I was tempted to make chown changes to the Chromebook Defold files, but realized that philfrei was a member of chronos-access, and so left that as is.
Let me know how I can further help!