Context:
https://github.com/vlingo/vlingo-examples/tree/master/vlingo-distributed-ping-pong
The problem is that when we run the Grid (on top of vlingo-cluster) there are various classes that cannot be found. These are fundamental, such as:
io.vlingo.actors.Actor
and sometimes:
io.vlingo.common.Completes
and other ones that are absolutely available.
This seems to be mostly because we use the JDK's Java compiler to dynamically compile generated protocol proxy classes. We have attempted various ClassLoader
-based fixes but without results.
Given set of jar dependencies, the above demo/example is broken on all Java versions 8, 11, 13 on OSX; even with a fat jar it's still broken. Actually the jar Maven build:
maven-jar-plugin
maven-dependency-plugin
and fat jar:
maven-assembly-plugin
both seems to move the problem to other dependencies not being found at start up.
NOTE: To see the failure via vlingo-distributed-ping-pong
you must remove all *__Proxy.java
from package io.vlingo.pingpong.domain
. Otherwise it always works. Caching the proxies in src/main
is our current workaround.
At runtime, when dynamically generating proxies and then compiling them, the compiler can't find the standard platform classes imported by the proxies. The problem is exhibited only on certain platforms.
πβ
Windows, with JDK 8, 11, and 13
πβ
Inside IntelliJ and Eclipse
πβοΈ OSX, with JDK 8, 11, and 13
ββ»οΈ Linux, currently untested
It's possible that the ClassLoader
related fix could be taking ideas from the OSS Eclipse project.