Automation Professionals' Image Streamer Driver Module

Yes, turns out there was a binary incompatible change. You need to recompile against the 8.1 SDK (so you compile against Milo 0.5).

It’s pretty interesting. It starts with this change: https://github.com/eclipse/milo/commit/1f19f5eb6fb2d553e544a0ee45212c1b566e7e94

This in itself would be an API incompatible change, when used directly, but that’s not what got you.

The NodeManager interface takes a type parameter T that has an upper bound on the previously mentioned Node interface that changed packages.

Your driver module invokes various methods on this interface that have T in the type signature.

I bet your module will recompile with zero changes, and when I peaked at the de-compilation output I saw no import or explicit usages of Node via the old package. But those interface calls result in bytecode invokeinterface instructions that do reference Node by its previous package. Like this call to NodeManager::removeNode:

   L3
    LINENUMBER 445 L3
    ALOAD 0
    GETFIELD com/automation_pros/streamer/driver/CV5kDevice.nodeManager : Lorg/eclipse/milo/opcua/sdk/server/api/NodeManager;
    ALOAD 3
    INVOKEINTERFACE org/eclipse/milo/opcua/sdk/server/api/NodeManager.removeNode (Lorg/eclipse/milo/opcua/sdk/server/api/nodes/Node;)Ljava/util/Optional; (itf)
    POP

So yeah… you have to recompile even if there are no changes necessary.