Module runs in designer and not client

Hi,

I am using a module that one of our developers had written. The module is a video player that streams video from AXIS IP camera. Running the module in designer works perfectly. But when I launch the client, it throws class not found an exception.

It seems like the designer is able to see the library, but the client is not able to see it.

Any help would be appreciated.

Does the module have a client hook and declare its dependencies to be client scoped as well?

Can you share the module.xml or build configuration if you’re using the Ignition maven plugin?

Hi Kevin, thanks for the reply.


No error when the module runs in the designer.


Exception when running on the client.

<?xml version="1.0" encoding="UTF-8"?>
<modules>
   <module>
      <id>com.par7.vams.vams-module</id>
      <name>VAMS Module</name>
      <description>Video Audio Management System</description>
      <version>1.0.0.20201115</version>
      <requiredignitionversion>8.0.0</requiredignitionversion>
      <jar scope="G">jaxb-api-2.3.0.jar</jar>
      <jar scope="G">jakarta.xml.soap-api-1.4.1.jar</jar>
      <jar scope="G">jna-platform-5.2.0.jar</jar>
      <jar scope="G">slf4j-simple-1.7.28.jar</jar>
      <jar scope="G">vams-module-common-1.0.0.jar</jar>
      <jar scope="G">slf4j-api-1.7.28.jar</jar>
      <jar scope="G">vams-module-gateway-1.0.0.jar</jar>
      <jar scope="G">jaxb-impl-2.3.0.1.jar</jar>
      <jar scope="G">stax-ex-1.8.1.jar</jar>
      <jar scope="G">jakarta.activation-api-1.2.1.jar</jar>
      <jar scope="G">javax.xml.soap-api-1.4.0.jar</jar>
      <jar scope="G">mimepull-1.9.11.jar</jar>
      <jar scope="G">jna-5.2.0.jar</jar>
      <jar scope="G">jaxb-core-2.3.0.1.jar</jar>
      <jar scope="G">vlcj-4.2.0.jar</jar>
      <jar scope="G">jakarta.xml.bind-api-2.3.2.jar</jar>
      <jar scope="G">vlcj-natives-4.1.0.jar</jar>
      <jar scope="G">saaj-impl-1.5.1.jar</jar>
      <jar scope="CD">jaxb-api-2.3.0.jar</jar>
      <jar scope="CD">jakarta.xml.soap-api-1.4.1.jar</jar>
      <jar scope="CD">jna-platform-5.2.0.jar</jar>
      <jar scope="CD">slf4j-simple-1.7.28.jar</jar>
      <jar scope="CD">vams-module-common-1.0.0.jar</jar>
      <jar scope="CD">slf4j-api-1.7.28.jar</jar>
      <jar scope="CD">jaxb-impl-2.3.0.1.jar</jar>
      <jar scope="CD">stax-ex-1.8.1.jar</jar>
      <jar scope="CD">vams-module-designer-1.0.0.jar</jar>
      <jar scope="CD">jakarta.activation-api-1.2.1.jar</jar>
      <jar scope="CD">vams-module-client-1.0.0.jar</jar>
      <jar scope="CD">javax.xml.soap-api-1.4.0.jar</jar>
      <jar scope="CD">mimepull-1.9.11.jar</jar>
      <jar scope="CD">jna-5.2.0.jar</jar>
      <jar scope="CD">jaxb-core-2.3.0.1.jar</jar>
      <jar scope="CD">vlcj-4.2.0.jar</jar>
      <jar scope="CD">jakarta.xml.bind-api-2.3.2.jar</jar>
      <jar scope="CD">vlcj-natives-4.1.0.jar</jar>
      <jar scope="CD">saaj-impl-1.5.1.jar</jar>
      <hook scope="C">com.par7.vams.client.ClientHook</hook>
      <hook scope="D">com.par7.vams.designer.DesignerHook</hook>
      <hook scope="G">com.par7.vams.GatewayHook</hook>
   </module>
</modules>

Pssst! I am not a lawyer, but I hope you’ve purchased a commercial license from Caprica. VLC, VLCJ, and related public packages are GPL and therefore cannot be distributed in an Ignition module. (Nor would LGPL suffice, as it isn’t possible to comply with substitution requirements within a signed .modl file.) That’s why my Image Streamer module dynamically links to OpenCV/ffmpeg libraries installed by the end user.

2 Likes

Hi Phil

Thanks for the warning, I will make a note of that. Other than that, any idea on why the module works in designer and not in the client.

I would guess that saag-impl is missing a dependency that IA happened to need for the Designer UI, but didn’t need in the Client. Since javax.xml and friends got booted from the JRE for java 11, you have to find and figure this out manually.