Custom module will not start in Ignition Designer

Working on a custom module that implements a 3rd-party app (JxMaps from TeamDev.com).

Successfully performed the following:

  • Run from Eclipse IDE as a java application.
  • Built using Ant compiler.
  • Module added to Ignition Gateway (w/ developer license).

In designer, I try to open any project, this custom module will not start. Here is error in java console:

at com.inductiveautomation.ignition.designer.IgnitionDesigner$StartupProjectDialogHandler$1.run(IgnitionDesigner.java:1833)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.ClassNotFoundException: com.teamdev.jxmaps.swing.MapView
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)

What does your module.xml look like after the module is built?

<?xml version="1.0" encoding="UTF-8"?> com.coherenttech.mapnavigator MapNavigator Google Maps navigator componenet license.html index.html 1.0.0.0 7.7.0 7
	<!-- Load in our jars for each scope -->
	<jar scope="DC">mapnavigator-client.jar.pack.gz</jar>
	<jar scope="D">mapnavigator-designer.jar.pack.gz</jar>


	<!-- Tell the Gateway and/or Designer where to find the hooks -->
	<hook scope="D">com.coherenttech.mapnavigator.designer.DesignerHook</hook>

So do the JxMaps jars get packed into your jars or are you missing those?

Module file contains these compressed files. Contents are listed beneath each file. Seems supporting libararies are not included. So, what is best practice to include these?

mapnavigator-client.jar.pack.gz

  • META-INF/
  • META-INF/MANIFEST.MF
  • com/
  • com/coherenttech/
  • com/coherenttech/mapnavigator/
  • com/coherenttech/mapnavigator/client/
  • images/
  • com/coherenttech/mapnavigator/client/BasePanel.class
  • com/coherenttech/mapnavigator/client/MapExample$1.class
  • com/coherenttech/mapnavigator/client/MapExample.class
  • com/coherenttech/mapnavigator/client/MapNavigatorComponent.class
  • com/coherenttech/mapnavigator/client/MapNavigatorPanel.class
  • com/coherenttech/mapnavigator/client/Test.class
  • images/hello_world_16.png
  • images/hello_world_32.png

mapnavigator-designer.jar.pack.gz

  • META-INF/
  • META-INF/MANIFEST.MF
  • com/
  • com/coherenttech/
  • com/coherenttech/mapnavigator/
  • com/coherenttech/mapnavigator/beaninfo/
  • com/coherenttech/mapnavigator/designer/
  • com/coherenttech/mapnavigator/beaninfo/MapNavigatorComponentBeanInfo.class
  • com/coherenttech/mapnavigator/designer/DesignerHook.class

All of your module dependencies need to be included in the modl file and need entries in the module.xml file. If you’re using ant you need to build this functionality yourself. You may be able to copy or get an idea of how it’s done by looking at an older version of the module SDK from when it still used ant.

If you use maven and the ignition-maven-plugin this is all done by the plugin. The latest examples in our github repo show how this plugin is used: github.com/inductiveautomation/ … k-examples

I was seriously considering installing Maven anyway. This provides the necessary motivation. I’ll let you know how it goes. Many thanks, Kevin. I’ve developed with .NET (VB, C#) for a long time. Just dipping my toes into java. BTW, am scheduled to attend the September conference. Will make sure I say “hi”.

Great, looking forward to seeing you there!

The last 24 hours have been spent getting acquainted with the Eclipse/Maven/Ignition combo. I cloned the sample projects from git and am trying to build/post one of them (WeatherModuleExample). After building and installing the module, the Ignition server reports an “API Version Mismatch”.

I’ve confirmed the following settings in pom.xml:
requiredIgnitionversion - 7.8.0
requiredframeworkversion - 6

What else should I look at?

BTW, our Ignition Server version is 7.8.0

In the ignition-maven-plugin configuration, found in the build modules pom.xml for each project you’ll notice that each module.xml is configured. The samples are all still built for 7.7 - just increment the framework and minimum ignition versions and you should be able to build.

“… each module.xml is configured.” I don’t understand what you’re saying here. I’ve attached the \build\pom.xml file with the ‘configuration’ section you mentioned. I see nothing about the module.xml files. Possible, I’m unclear on what you’re trying to say.

Lines 56-65 end up directly in the module.xml file. The framework version for 7.8 should be 7

Changing the FrameworkVersion did the trick. I’m up and running. Now, just to tie up a few loose ends…

Before yesterday, I was using the old Ignition SDK without Maven. I was:
1 - Using the module-skeleton-creator.jar to create new projects.
2 - Using the Ant compiler to build modl files.

My understanding is that, with the introduction of Maven into the mix, those two things go away.

  • module-skeleton-creator.jar has been replaced with the Ignition archetype files found on Maven Central.
  • Building modl files with the Ant compiler is now replaced with ‘mvn package’

Am I on the right track?

Yep, both of those are correct.

The next issue you’ll probably run into is that 7.7.8+ and 7.8.3+ require a new method of module signing, outlined here: docs.inductiveautomation.com:84 … le+Signing

Our current Ignition server is 7.8.0.

Are you saying we will run into this issue only after upgrading to 7.8.3+ ??

[quote=“cdulgar”]Our current Ignition server is 7.8.0.

Are you saying we will run into this issue only after upgrading to 7.8.3+ ??[/quote]

Yes. We don’t typically make breaking changes like this mid-version, but for a number of reasons introducing the new module signing system needed to be done ASAP. In the end it’s supposed to be better for 3rd party developers - you no longer need to rely on us to sign your modules.

The support team at TeamDev.com (authors of JxMaps) do not yet support Maven for this product. So, going “old school” may be my best option. If you agree, is there a sample project you can point me to that will help me out?

Many thanks,
Casey

In the short term, you can install the artifact locally so that you can build: maven.apache.org/guides/mini/gu … local.html

In the long term, the proper thing to do would be to run your own Nexus or Artifactory instance, internal to your company, where you can host any 3rd party jars that aren’t publicly available via Maven in their own repository. We use Nexus and have a number of 3rd party jars in ours, including some from teamdev.

Hi Kevin,
I tried working with Maven, but since TeamDev does not support it for this app, and my learning curve seems to be a bit steep (although I was able to enter the TeamDev JxMaps jars into my local Maven cache), I went back to using Ant.

I have written, compiled and installed my app (MapNavigator) into Ignition 7.8.3. For initial test, rather than using the Map Viewer component from TeamDev, I implemented a simple label from the “Hello World” example. 100% success. In designer, new Group and Item were created in the Component Palette.

I then replaced the “Hello World” label functionality with the classes used for my map viewer. It compiled and installed successfully. Yet, from within the designer, the new group is added to the Component Palette, but the component is not displayed as an item under the group.

I attached a snapshot of my ‘modl’ file. You will see that the TeamDev files (3 of them) are installed as well as the packed files for the client and designer modules. I also attached a snapshot of the module.xml file.

Thanks for the help.

I am at a stand-still with this issue. Rather than working on my project, I’m struggling to configure the tools.

When the code of my client project depends on 3rd-party jar files, should I embed them into that project by creating a fat jar, thus hiding them from the module.xml? Or, should they be exposed to the module.xml as shown in my previous post?