On 23/02/2016 23:21, Sander Mak wrote:
:
However, is such an application class really something I want to export to
other modules? Of course using a qualified export the scope can be restricted
to the javafx.graphics module, and that's what I ended up doing.
In the early exploration phase of Project Jigsaw then modules could
declare entry points. It worked okay for the `public static void main`
cases but it wasn't really general purpose enough. There were
suggestions to use services for entry points at the time too. Things
have been significantly simplified since then and there aren't entry
points in the current proposal.
In general, I think it's interesting that many frameworks want reflective
access to what are essentially internal implementation classes. Spring comes to
mind, you'd want to export interfaces but not Spring bean implementation
classes, even though the framework needs access to instantiate them.
Indeed and I'm sure Mark will bring proposals around this to the JSR soon.
As has been discussed before on this list, ServiceLoader has a special
super-power in this regard, and I sort of expected JavaFX Application handling
to have that same superpower for instantiating the Application class.
There isn't any notion of "superpower" as such. Instead, think of it as
a special type of access check where access is checked to the service
type (the super type) rather than the implementation type.
One more follow-up question: when I remove the main() method that invokes launch
(see here:
https://bitbucket.org/sandermak/javafx-application/diff/src/applicationmodule/application/Main.java?diff2=fca74ffbc28d&at=without-main),
the following error comes up (build 9-ea+106-jigsaw-nightly-h4498-20160221):
Error: Main method not found in class application.Main, please define the main
method as:
public static void main(String[] args)
or a JavaFX application class must extend javafx.application.Application
I hope Kevin or David can answer this but assuming this is output from
`java -m` then it will be because that doesn't locate FX entry point
(unlike `java -jar`). This may be something that needs to be fixed.
-Alan