edvin / fxlauncher

Auto updating launcher for JavaFX Applications
Apache License 2.0
715 stars 107 forks source link

NoClassDefFoundError: com/sun/javafx/application/ParametersImpl #161

Closed delike closed 5 years ago

delike commented 5 years ago

I can not build the Launcher since i have upgraded from Java 8 to openJDK 11.

i got the following Error when i run the deployApp-Task:

Execution failed for task ':generateApplicationManifest'. Root cause: java.lang.ClassNotFoundException: com.sun.javafx.application.ParametersImpl

I use org.openjfx.javafxplugin version 0.0.7 ( or 0.0.4) with all Modules imported.

Has anyone an Idea?

zeljkosh commented 5 years ago

Fxlauncher does not support java 11, you can take a look here. and i dont think the support for 11 will come soon, also the java 8 will be supported for long time. you can make it work on your own, but out of the box it will not work properly with java 11.

mordechaim commented 5 years ago

https://github.com/update4j/update4j

zeljkosh commented 5 years ago

https://github.com/update4j/update4j

Does your program support spring boot based javafx applications?

mordechaim commented 5 years ago

As long your code doesn't run in a container (i.e. It has it's own main method) it should work.

More clearly, if it has an application entry point, even it is triggered by a framework or the framework itself is the entry point, it should work. It will not work for servlets which doesn't have it's own lifecycle, but completely dependent on a container.

delike commented 5 years ago

https://github.com/update4j/update4j

I have seen this yesterday but i'am not sure how to implement it on my application.

mordechaim commented 5 years ago

Run the update4j jar file and read the instructions. You'll only need to understand how to create configurations to get your app up and running. More advanced features exists, as service providers but leave this for later.

It has a slightly harder learning curve than fxlauncher I agree, but is way more powerful.

delike commented 5 years ago

but how do i publish the update4j.jar to other clients? They don't want to start the app on the console.

mordechaim commented 5 years ago

You're touching the subject of service providers. You'll supply your own UpdateHandler which does the JavaFX download progress drawing. Nothing will show when started via the console and you can use java packager or bat2exe to create a clickable executable to your users.

Currently it does not have a default JavaFX interface as FXLauncher has; it was built at a more abstract level (you might want to use it for Swing or console apps or host an embedded Jetty server etc.). The console version is just to get starters to see their app running without much configuration.

Check out the demo app for ideas how to get a nice JavaFX progress monitor.

delike commented 5 years ago

Sorry but i dont understand what im having to do.. i have created a nwe javafx-application. on MainController i have create an Configuration and run config.update(); and config.launch(); but how do i add my other Project wich is my main-application?

How do i export my app to add it to launcher-app with FileMetadata.streamDirectory?

mordechaim commented 5 years ago

Since I expect you to use the default update interface for now (with console output) until you can get it to run, you should not call update() or launch() yourself. It is done internally for you.

Code your business application separately as if it has no updater framework involved. When you're ready for updatable deployment and you have all files you need, you should then build a configuration (using the builder API) and output it to a file. This is actually the biggest hurdle for starters; once you passed this (mentally and practically) you're open to much more features.

Now, simply pass the config file to the --remote or --local options (or both as a fallback plan in case of Internet outage) and everything will be done for you. In order to find the main class you'll have to add a special property as explained in the launch output, but this is only for the default behaviour; totally overridable.

zeljkosh commented 5 years ago

I think this issue should be closed, since it was answered. All other questions regarding upload4j you can ask on its own github page. cheers