We are trying to load a java project into the SDK to make a component module, buf we have problems. The project that we are trying to load, have packages and .jar files, We are not able to load it, we have an error when we drop the component into a screen and we think that the problem is some references…
If you’ve already got a module, then the /lib/core/ hack shouldn’t necessary. What’s the actual stacktrace of the error message? An IAE is not what I would expect if you were missing required classes - I’d expect a ClassDefNotFound or similar error.
I suspect your issue is that you’ve just got this project sitting next to your module in Eclipse but you haven’t actually managed to get its JAR file into your module when it’s built.
Are you using ignition-maven-plugin to build your module? It should take care of putting any compile-scope dependencies into the module and making an entry in the module.xml file.
Can you upload a copy of your module or module.xml file?
Yes, I am using the maven plugin, I attached the ignition module, a folder with the .jar files, and the java project which I want to include in the ignition module (there are two projects, one is called core and the other is a project with the examples)
you can download it form this link:
java.lang.IllegalArgumentException: No such Gstreamer factory: appsink
at org.freedesktop.gstreamer.ElementFactory.makeRawElement(ElementFactory.java:307)
at org.freedesktop.gstreamer.Element.makeRawElement(Element.java:99)
at org.freedesktop.gstreamer.elements.AppSink.<init>(AppSink.java:86)
at org.freedesktop.gstreamer.examples.SimpleVideoComponent.<init>(SimpleVideoComponent.java:75)
at imas.client.OCRComponent.<init>(OCRComponent.java:123)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.base/java.lang.reflect.Constructor.newInstance(Unknown Source)
at java.base/java.lang.Class.newInstance(Unknown Source)
at com.inductiveautomation.vision.api.designer.palette.JavaBeanPaletteItem.createJavaBean(JavaBeanPaletteItem.java:58)
at com.inductiveautomation.vision.api.designer.palette.JavaBeanPaletteItem.createComponent(JavaBeanPaletteItem.java:54)
at com.inductiveautomation.factorypmi.designer.workspace.tools.InstantiationTool.onClick(InstantiationTool.java:89)
at com.inductiveautomation.ignition.designer.designable.DesignPanel$ToolMouseListener.onClick(DesignPanel.java:986)
at com.inductiveautomation.ignition.client.util.gui.CommonMouseAdapter.mouseReleased(CommonMouseAdapter.java:72)
at java.desktop/java.awt.AWTEventMulticaster.mouseReleased(Unknown Source)
at java.desktop/java.awt.AWTEventMulticaster.mouseReleased(Unknown Source)
at java.desktop/java.awt.AWTEventMulticaster.mouseReleased(Unknown Source)
at java.desktop/java.awt.AWTEventMulticaster.mouseReleased(Unknown Source)
at java.desktop/java.awt.Component.processMouseEvent(Unknown Source)
at java.desktop/javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.desktop/java.awt.Component.processEvent(Unknown Source)
at java.desktop/java.awt.Container.processEvent(Unknown Source)
at java.desktop/java.awt.Component.dispatchEventImpl(Unknown Source)
at java.desktop/java.awt.Container.dispatchEventImpl(Unknown Source)
at java.desktop/java.awt.Component.dispatchEvent(Unknown Source)
at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.desktop/java.awt.Container.dispatchEventImpl(Unknown Source)
at java.desktop/java.awt.Window.dispatchEventImpl(Unknown Source)
at java.desktop/java.awt.Component.dispatchEvent(Unknown Source)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.desktop/java.awt.EventQueue$4.run(Unknown Source)
at java.desktop/java.awt.EventQueue$4.run(Unknown Source)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.desktop/java.awt.EventQueue$5.run(Unknown Source)
at java.desktop/java.awt.EventQueue$5.run(Unknown Source)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.desktop/java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.run(Unknown Source)
Ignition v8.0.5 (b2019101516)
Java: Azul Systems, Inc. 11.0.4
Looking at the source code, the exception is thrown in:
This code is from the source code of the java project(it is not mine), when you execute the project outside Ignition it works, but for some reason from inside the module it doesn’t works.
I was looking to the module.xml file, and I have included some lines to include manually some .jar files after that I have zipped the files and rename it but It doesn’t works…
I would expect a gStreamer Java API to be using a JNI to connect to gStreamer's native libraries. Running outside of Ignition allows the JVM to use the platform library paths to find and load everything necessary. Within Ignition, you must manage all dependencies yourself. Note that much of gStreamer is GPL code and cannot be distributed in an Ignition module.
Fortunately, once you manage to get a JNI .dll or .so file loaded in Ignition, they will generally follow the platform's defaults to load other native dependencies. You might find this thread helpful:
In my module, I included a config page to allow the user to specify exactly where the necessary external jar and JNI files are located, if not found in the default location.
You have a folder called “jar” with 2 jars in it that aren’t listed in your dependencies anywhere:
jar_mio.jar
x86_64-3.3.0-v3346.jar
I don’t really know anything about the libraries you’re using, but if these are necessary for it to run correctly then you should make sure they’re indicated as dependencies by your module.