# Automation Professionals' Image Streamer Driver Module

**URL:** <https://forum.inductiveautomation.com/t/automation-professionals-image-streamer-driver-module/29371>\
**Category:** 3rd Party Modules\
**Tags:** ignition81, ignition79, ignition80, ignition83\
**Created:** [October 24, 2019, 6:11pm UTC](https://forum.inductiveautomation.com/t/automation-professionals-image-streamer-driver-module/29371 "2019-10-24T18:11:49Z")\
**Posts on this page:** 1\
**Showing post:** 34

<div class="post-metadata">

**Author:** ![Kevin.Herron](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/kevin.herron/32/7259_2.png) [@Kevin.Herron](https://forum.inductiveautomation.com/u/Kevin.Herron)\
**Post date:** [November 19, 2020, 4:44am UTC](https://forum.inductiveautomation.com/t/automation-professionals-image-streamer-driver-module/29371/34 "2020-11-19T04:44:02Z")

</div>

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](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](https://github.com/eclipse/milo/blob/6e10014c4fb2c7aae6ddcc7eea3f35ff4400d6e6/opc-ua-sdk/sdk-server/src/main/java/org/eclipse/milo/opcua/sdk/server/api/NodeManager.java#L24) 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`:

```auto
   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.

---

_[View the full topic](https://forum.inductiveautomation.com/t/automation-professionals-image-streamer-driver-module/29371)._
