Hi,

FXCanvas should not be loaded multiple times. This sounds like a severe
bug in e(fx)clipse OSGi-Adapterhooks.

Tom

On 04.10.18 16:13, Kevin Rushforth wrote:
> I think I see what caused this. In FX 8 we called FXCanvas::initFx from
> the constructor of every FXCanvas. It then called an internal startup
> method, PlatformImpl::startup, that permits calling it when the Toolkit
> is already initialized, turning it into a runLater if it is. As part of
> the refactoring for FX 9 I changed it to call FXCanvas::initFx one time
> from the static block. At the same time, I changed the startup call to
> use the public Platform::startup method. This change was necessary
> because the javafx.swt module does not have the needed qualified exports
> to call internal methods until after initialization. The public
> Platform::startup method is specified to throw an exception if called
> more than once.
> 
> So if the FXCanvas class is loaded more than once, for example, if it is
> called from different ClassLoaders, then that would cause the problem.
> Please file a bug and I'll take a look at it. It might be as simple as
> wrapping the call to Platform::startup in a try/catch and calling
> Platform::runLater in the catch block.
> 
> -- Kevin
> 
> 
> On 10/4/2018 6:03 AM, marcel Austenfeld wrote:
>> Hello Kevin,
>>   I still have problems with the error:
>> "java.lang.IllegalStateException: Toolkit already initialized".
>>   However I found out that this error only occurs if I call SWT
>> FXCanvas classes located in different Eclipse plugins.
>>   I can create multiple JavaFX canvas if they are located in one
>> Eclipse plugin.
>>   Vice versa if I try to to open the JavaFX SceneBuilder canvas which
>> is located in a seperate Eclipse plugin this error occurs again.
>>   So I wonder that beginning with Java 9 the JavaFX toolkit doesn't
>> recognize an already started toolkit in another Eclipse plugin (which
>> was definitely the case with Java 8!).
>>   Maybee this has something to do with the new module system of Java >=9?
>>      
>> Gesendet: Mittwoch, 26. September 2018 um 14:09 Uhr
>> Von: "Kevin Rushforth" <kevin.rushfo...@oracle.com>
>> An: "marcel Austenfeld" <marcel...@web.de>, openjfx-dev@openjdk.java.net
>> Betreff: Re: "Toolkit already initialized" error with OpenJDK 11
>> I'm' not aware of anything that intentionally changed between FX in JDK
>> 8 and FX 11, but my guess is that the FX runtime is being shutdown after
>> your first FXCanvas exits. Try making the following call (only needed
>> one time) before creating your first FXCanvas:
>>
>>      Platform.setImplicitExit(false);
>>
>> -- Kevin
>>
>> On 9/26/2018 4:22 AM, marcel Austenfeld wrote:
>>> First of all congratulation to the new release and thank you for the
>>> hard work on JavaFX.
>>>
>>>
>>> I have a problem with JavaFX which in my case is embedded in a Rich
>>> Client Platform of Eclipse.
>>>
>>> I integrated several SWT FXCanvas (some with SwingNode panels as a
>>> SWT_AWT replacement) into my app.
>>>
>>> This works fine in Java 8 which my current release depends on.
>>>
>>> However in Java 11 after the second panel is initialized at startup I
>>> get the following error:
>>>
>>> "Caused by: java.lang.IllegalStateException: Toolkit already
>>> initialized"
>>>
>>> Is there a new option available to avoid a new initialization of the
>>> toolkit if several FXCanvas are embedded in an application?
>>> Or do you now any changes since Java 8 which could the cause of such
>>> an exception?
>>>
>>>
>>> Thanks in advance for any help.
>>   
> 

-- 
Tom Schindl, CTO
BestSolution.at EDV Systemhaus GmbH
Eduard-Bodem-Gasse 5-7. A-6020 Innsbruck
Reg. Nr. FN 222302s am Firmenbuchgericht Innsbruck

Reply via email to