ClassNotFoundException at HostServicesDelegate

Yasumasa Suenaga yasuenag at gmail.com
Wed Jun 29 23:26:06 UTC 2016


Hi Kevin,

Currently, ctor of HostServices will not be initialized because it
will recieve ClassNotFoundException. However, the application seems
to be run.

What instance should be returned from HostServicesDelegate#getInstance()
by default if javafx.deploy is not loaded?

I guess we can use ModuleFinder#find() to refactoring.


Thanks,

Yasumasa


On 2016/06/30 0:09, Kevin Rushforth wrote:
> Hi Yasumasa,
>
> No, this is not a correct solution as it just masks the problem. A likely solution will be to refactor the code to provide an alternative implementation of HostServicesDelegate in case the javafx.deploy module is not loaded (either in the case of a purely open build of OpenJFX or in the case where the deploy module doesn't get loaded by default).
>
> -- Kevin
>
>
> Yasumasa Suenaga wrote:
>> Hi Kevin,
>>
>>>    java -addmods javafx.deploy ....
>>>
>>> We will need a fix that doesn't require this.
>>
>> I guess you will fix to add exports directive to module-info.java in closed source.
>> However, I think we should fix as below:
>>
>> ----------------
>> diff -r 3597495167c7 modules/graphics/src/main/java/com/sun/javafx/application/HostServicesDelegate.java
>> --- a/modules/graphics/src/main/java/com/sun/javafx/application/HostServicesDelegate.java       Tue Jun 28 01:48:07 2016 +0530
>> +++ b/modules/graphics/src/main/java/com/sun/javafx/application/HostServicesDelegate.java       Wed Jun 29 23:53:07 2016 +0900
>> @@ -55,7 +55,6 @@
>>                                  getInstanceMeth = factoryClass.getMethod(
>>                                          "getInstance", Application.class);
>>                              } catch (Exception ex) {
>> -                                ex.printStackTrace();
>>                                  return null;
>>                              }
>>                          }
>> ----------------
>>
>> Otherwise, the user who uses pure OpenJFX will see this stack trace.
>> I think this exception can be ignored.
>> So it should not be printed.
>>
>>
>> Thanks,
>>
>> Yasumasa
>>
>>
>> On 2016/06/29 0:44, Kevin Rushforth wrote:
>>> A workaround is:
>>>
>>>    java -addmods javafx.deploy ....
>>>
>>> We will need a fix that doesn't require this.
>>>
>>> -- Kevin
>>>
>>>
>>> Kevin Rushforth wrote:
>>>> Thanks for the pointer. That was enough for me to reproduce the bug. I filed the following issue to track it:
>>>>
>>>> https://bugs.openjdk.java.net/browse/JDK-8160464
>>>>
>>>> -- Kevin
>>>>
>>>>
>>>> Yasumasa Suenaga wrote:
>>>>>
>>>>> Hi Kevin,
>>>>>
>>>>> I use JDK 9 EA b124 for Windows x64 from java.net <http://java.net>.
>>>>>   https://jdk9.java.net/download/
>>>>>
>>>>> If you want to full stack trace, please download from here:
>>>>>   http://icedtea.classpath.org/bugzilla/attachment.cgi?id=1540&action=edit <http://icedtea.classpath.org/bugzilla/attachment.cgi?id=1540&action=edit>
>>>>>
>>>>> This exception does not occur on OracleJDK 8. So I guess this exception is  from Java FX 9.
>>>>>
>>>>> Thanks,
>>>>>
>>>>> Yasumasa
>>>>>
>>>>> 2016/06/28 23:52 "Kevin Rushforth" <kevin.rushforth at oracle.com <mailto:kevin.rushforth at oracle.com>>:
>>>>>
>>>>>     Hi Yasumasa,
>>>>>
>>>>>     I assume this is a download of the Oracle JDK from java.net
>>>>>     <http://java.net>? We haven't seen any problems like this, so it
>>>>>     might be a problem with HeapStats analyzer. The class in question
>>>>>     is a closed-source class that lives in the javafx.deploy module.
>>>>>     What exactly are you running?
>>>>>
>>>>>     -- Kevin
>>>>>
>>>>>
>>>>>     Yasumasa Suenaga wrote:
>>>>>
>>>>>         Hi all,
>>>>>
>>>>>         When I ran HeapStats Analyzer [1] on JDK 9 EA b124, I
>>>>>         encountered ClassNotFoundException as below:
>>>>>         ------------
>>>>>         java.lang.ClassNotFoundException:
>>>>>         com.sun.deploy.uitoolkit.impl.fx.HostServicesFactory
>>>>>                 at
>>>>>         jdk.internal.loader.BuiltinClassLoader.loadClass(java.base at 9-ea/BuiltinClassLoader.java:366)
>>>>>
>>>>>                 at
>>>>>         java.lang.ClassLoader.loadClass(java.base at 9-ea/ClassLoader.java:419)
>>>>>                 at java.lang.Class.forName0(java.base at 9-ea/Native Method)
>>>>>                 at java.lang.Class.forName(java.base at 9-ea/Class.java:378)
>>>>>                 at
>>>>>         com.sun.javafx.application.HostServicesDelegate.lambda$getInstance$0(javafx.graphics at 9-ea/HostServicesDelegate.java:52)
>>>>>
>>>>>                   :
>>>>>         ------------
>>>>>
>>>>>         This message does not appear on JDK 8u92.
>>>>>         I think this message is printed at [2].
>>>>>
>>>>>         I think this exception message do not need to be printed.
>>>>>         At least, it is debug level.
>>>>>
>>>>>         Does someone work for it?
>>>>>         If not so, I want to contribute patch.
>>>>>
>>>>>
>>>>>         Thanks,
>>>>>
>>>>>         Yasumasa
>>>>>
>>>>>
>>>>>         [1] http://icedtea.classpath.org/wiki/HeapStats
>>>>>         [2]
>>>>>         http://hg.openjdk.java.net/openjfx/9-dev/rt/file/3597495167c7/modules/graphics/src/main/java/com/sun/javafx/application/HostServicesDelegate.java#l58
>>>>>
>>>>>


More information about the openjfx-dev mailing list