AndyObtiva / glimmer-dsl-swt

Glimmer DSL for SWT (JRuby Desktop Development Cross-Platform Native GUI Framework) - The Quickest Way From Zero To GUI - If You Liked Shoes, You'll Love Glimmer!
MIT License
107 stars 6 forks source link

Packaged Windows App does not seem to run #14

Closed jayczech23 closed 2 years ago

jayczech23 commented 2 years ago

Desktop (please complete the following information and make sure it matches Glimmer Pre-Requisites before reporting an issue):

Describe the issue After packaging my application (created with scaffolding) on Windows package[exe | msi] in both .exe and .msi format, opening said .exe does not open the application. A loading indicator appears for some time on the cursor, and then stops, without showing the application.

AndyObtiva commented 2 years ago

Given the use of JRuby, sometimes the app takes a few seconds to load, so you gotta just patiently wait for it to start.

But, I assume you can run the app successfully without packaging via glimmer run from the application directory? Also, try running the app via java -jar dist/package.jar (where you replace package.jar with your project name followed by .jar). What happens? I am trying to isolate if you have a general error, if it's a JAR only error, or if it's a native executable error.

jayczech23 commented 2 years ago

Running the application using glimmer run has the same result as trying to run by opening the .exe file, which is a loading indicator for a brief time, and then the application is never shown.

I did attempt to run using the .jar file, and got the following output:

2021-11-01T15:32:38.214-06:00 [main] WARN FilenoUtil : Native subprocess control requires open access to the JDK IO subsystem
Pass '--add-opens java.base/sun.nio.ch=ALL-UNNAMED --add-opens java.base/java.io=ALL-UNNAMED' to enable.
[2021-11-01 15:32:45] ERROR glimmer: org/jruby/javasupport/ext/Module.java:99:in `java_import': not a valid Java identifier: .Resource (ArgumentError)
        from uri:classloader:/jruby/java/core_ext/object.rb:16:in `java_import'
        from uri:classloader:/gems/glimmer-dsl-swt-4.21.1.0/lib/glimmer/swt/image_proxy.rb:127:in `input_stream'
        from uri:classloader:/gems/glimmer-dsl-swt-4.21.1.0/lib/glimmer/swt/image_proxy.rb:86:in `initialize'
        from org/jruby/RubyClass.java:907:in `new'
        from uri:classloader:/gems/glimmer-dsl-swt-4.21.1.0/lib/glimmer/swt/image_proxy.rb:43:in `create'
        from uri:classloader:/gems/glimmer-dsl-swt-4.21.1.0/lib/glimmer/dsl/swt/image_expression.rb:56:in `interpret'
        from uri:classloader:/gems/glimmer-2.4.0/lib/glimmer/dsl/engine.rb:181:in `block in interpret_expression'
        from uri:classloader:/gems/glimmer-2.4.0/lib/glimmer/dsl/expression.rb:64:in `around'
        from uri:classloader:/gems/glimmer-2.4.0/lib/glimmer/dsl/engine.rb:180:in `interpret_expression'
        from uri:classloader:/gems/glimmer-2.4.0/lib/glimmer/dsl/engine.rb:175:in `interpret'
        from uri:classloader:/gems/glimmer-2.4.0/lib/glimmer.rb:78:in `method_missing'
        from uri:classloader:/dads-toolchain/app/dads_toolchain/view/app_view.rb:49:in `block in AppView'
        from uri:classloader:/gems/glimmer-2.4.0/lib/glimmer/dsl/parent_expression.rb:32:in `add_content'
        from uri:classloader:/gems/glimmer-2.4.0/lib/glimmer/dsl/engine.rb:199:in `add_content'
        from uri:classloader:/gems/glimmer-2.4.0/lib/glimmer/dsl/engine.rb:182:in `block in interpret_expression'
        from org/jruby/RubyKernel.java:1940:in `tap'
        from uri:classloader:/gems/glimmer-2.4.0/lib/glimmer/dsl/engine.rb:181:in `block in interpret_expression'
        from uri:classloader:/gems/glimmer-2.4.0/lib/glimmer/dsl/expression.rb:64:in `around'
        from uri:classloader:/gems/glimmer-2.4.0/lib/glimmer/dsl/engine.rb:180:in `interpret_expression'
        from uri:classloader:/gems/glimmer-2.4.0/lib/glimmer/dsl/engine.rb:65:in `block in shell'
        from uri:classloader:/dads-toolchain/app/dads_toolchain/view/app_view.rb:46:in `block in AppView'
        from org/jruby/RubyBasicObject.java:2663:in `instance_exec'
        from uri:classloader:/gems/glimmer-dsl-swt-4.21.1.0/lib/glimmer/ui/custom_widget.rb:182:in `block in initialize'
        from uri:classloader:/gems/glimmer-dsl-swt-4.21.1.0/lib/glimmer/dsl/swt/exec_expression.rb:46:in `block in interpret'
        from uri:classloader:/gems/glimmer-dsl-swt-4.21.1.0/lib/glimmer/swt/display_proxy.rb:151:in `auto_exec'
        from uri:classloader:/gems/glimmer-dsl-swt-4.21.1.0/lib/glimmer/dsl/swt/exec_expression.rb:44:in `interpret'
        from uri:classloader:/gems/glimmer-2.4.0/lib/glimmer/dsl/engine.rb:181:in `block in interpret_expression'
        from uri:classloader:/gems/glimmer-2.4.0/lib/glimmer/dsl/expression.rb:64:in `around'
        from uri:classloader:/gems/glimmer-2.4.0/lib/glimmer/dsl/engine.rb:180:in `interpret_expression'
        from uri:classloader:/gems/glimmer-2.4.0/lib/glimmer/dsl/engine.rb:65:in `block in auto_exec'
        from uri:classloader:/gems/glimmer-dsl-swt-4.21.1.0/lib/glimmer/ui/custom_widget.rb:182:in `initialize'
        from uri:classloader:/gems/glimmer-dsl-swt-4.21.1.0/lib/glimmer/ui/custom_shell.rb:42:in `initialize'
        from org/jruby/RubyClass.java:907:in `new'
        from uri:classloader:/gems/glimmer-dsl-swt-4.21.1.0/lib/glimmer/dsl/swt/custom_widget_expression.rb:49:in `interpret'
        from uri:classloader:/gems/glimmer-2.4.0/lib/glimmer/dsl/engine.rb:181:in `block in interpret_expression'
        from uri:classloader:/gems/glimmer-2.4.0/lib/glimmer/dsl/expression.rb:64:in `around'
        from uri:classloader:/gems/glimmer-2.4.0/lib/glimmer/dsl/engine.rb:180:in `interpret_expression'
        from uri:classloader:/gems/glimmer-2.4.0/lib/glimmer/dsl/engine.rb:175:in `interpret'
        from uri:classloader:/gems/glimmer-2.4.0/lib/glimmer.rb:78:in `method_missing'
        from (eval):6:in `launch'
        from uri:classloader:/dads-toolchain/app/dads_toolchain/launch.rb:3:in `<main>'
        from org/jruby/RubyKernel.java:1017:in `require'
        from uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/rubygems/core_ext/kernel_require.rb:85:in `require'
        from uri:classloader:/dads-toolchain/bin/dads_toolchain:7:in `<main>'
        from org/jruby/RubyKernel.java:1052:in `load'
        from uri:classloader:/META-INF/main.rb:1:in `<main>'
        from org/jruby/RubyKernel.java:1017:in `require'
        from uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/rubygems/core_ext/kernel_require.rb:85:in `require'
        from <script>:3:in `<main>'

ERROR: org.jruby.embed.EvalFailedException: (NoMethodError) undefined method `swt_widget' for true:TrueClass
AndyObtiva commented 2 years ago

The issue is not a packaging issue if glimmer run fails too.

I was hoping invoking glimmer run from the project directory would give you a stack trace. Did it not print out an error report?

By the way, this error undefined method swt_widget' for true:TrueClass is usually caused by a previous error (it is not the direct culprit). I think you should have more output that you did not share perhaps.

In any case, glimmer-dsl-swt version 4.21.2.0 has just been released, and it might resolve your issues (but it would be better to rescaffold your project with it from scratch instead of simply updating Gemfile if you have not made many changes)

AndyObtiva commented 2 years ago

Nevermind, this error report tells the story: java_import': not a valid Java identifier: .Resource (ArgumentError)

This is an issue that was definitely resolved in the new 4.21.2.0 release. Let me know how it works by scaffolding a new project with it from scratch.

p.s. if you have a project you made a lot of changes in, updating Gemfile with 4.21.2.0 might just work too, but rescaffolding and copying the changes might work better.

jayczech23 commented 2 years ago

Hi @AndyObtiva

Following your suggestion of updating glimmer to 4.21.2.0 and rebuilding the project from scratch using scaffold did the trick.

Thank you and closing.