I managed to run Monocle/Headless on Windows with 8u25. This will allow
users to run headless tests.

All what is needed is to copy all files from "com/sun/glass/ui/monocle" of
"javafx-src.zip" and add the
cursor resource files from
"modules/graphics/src/main/resources/com/sun/glass/ui/monocle" of the
related hg tag in the OpenJFX repository [1].

Before Application#launch() is called we need to manually set the Glass and
Monocle platforms:

accessStaticField(com.sun.glass.ui.PlatformFactory.class, "instance",
    new com.sun.glass.ui.monocle.MonoclePlatformFactory());
accessStaticField(com.sun.glass.ui.monocle.NativePlatformFactory.class,
"platform",
    new com.sun.glass.ui.monocle.headless.HeadlessPlatform());

The directory structure in 8u40 is a bit different, but there could be
added version checks. Checking
for the JVM vars "glass.platform" and "monocle.platform" might be also
added to this code.

[1] http://hg.openjdk.java.net/openjfx/8u-dev/rt/tags


On Tue, Nov 4, 2014 at 8:42 PM, Benjamin Gudehus <hasteb...@gmail.com>
wrote:

> Hmm. Seems that Class.forName() in com.sun.glass.ui.PlatformFactory won't
> retrieve externally defined PlatformFactorys. So I will try to set the
> PlatformFactory.instance field manually, before the
> Application/Tookit/FX-Thread is launched.
>
> On Tue, Nov 4, 2014 at 7:36 PM, Benjamin Gudehus <hasteb...@gmail.com>
> wrote:
>
>> Thank you. That makes it clearer. :)
>>
>> Is it possible to supply the headless part of Monocle in an external Jar
>> for desktop platforms?
>>
>> As far as I know the only possibility to run TestFX tests with
>> Hudson/Jenkins is in headless mode.
>> TestFX's tests itself can only run with the X virtual framebuffer on
>> Linux test clients for the Travis CI so far.
>>
>> So far the only advice I could give TestFX users who like to run headless
>> tests is to use 1.8.0_20-ea-b05.
>>
>

Reply via email to