Hello all,
I am encountering an error when trying to run my custom StreamPipes
Sink. When I start it in IntelliJ IDEA everything works as expected.
When I create a JAR file with the command
'mvn clean package javadoc:aggregate -U -DskipTests -Denforcer.skip'
it successfully creates the JAR file for my sink. Now when I run the
file with
'java -jar <PATH>.jar' I get the following error:
'''
_______ __ ______ __
| __| |_.----.-----.---.-.--------.| __ \__|.-----.-----.-----.
|__ | _| _| -__| _ | || __/ || _ | -__|__ --|
|_______|____|__| |_____|___._|__|__|__||___| |__|| __|_____|_____|
|__|
** StreamPipes Pipeline Element Container **17:19:58.572 SP [main] INFO
gmbh.edi.hive_pipeline_elements.Init - Starting Init on doemski-XPS-13-9370
with PID 15468
(/home/doemski/dev/streampipes_custom_pipeline_elements/HivePipelineElements/target/measurement-sink.jar
started by doemski in
/home/doemski/dev/streampipes_custom_pipeline_elements/HivePipelineElements)
17:19:58.574 SP [main] INFO gmbh.edi.hive_pipeline_elements.Init - No active
profile set, falling back to default profiles: default
17:19:58.659 SP [main] ERROR o.s.boot.SpringApplication - Application run failed
java.lang.IllegalArgumentException: No auto configuration classes found in
META-INF/spring.factories. If you are using a custom packaging, make sure that
file is correct.
at org.springframework.util.Assert.notEmpty(Assert.java:464)
at
org.springframework.boot.autoconfigure.AutoConfigurationImportSelector.getCandidateConfigurations(AutoConfigurationImportSelector.java:173)
at
org.springframework.boot.autoconfigure.AutoConfigurationImportSelector.getAutoConfigurationEntry(AutoConfigurationImportSelector.java:116)
at
org.springframework.boot.autoconfigure.AutoConfigurationImportSelector$AutoConfigurationGroup.process(AutoConfigurationImportSelector.java:396)
at
org.springframework.context.annotation.ConfigurationClassParser$DeferredImportSelectorGrouping.getImports(ConfigurationClassParser.java:875)
at
org.springframework.context.annotation.ConfigurationClassParser$DeferredImportSelectorGroupingHandler.processGroupImports(ConfigurationClassParser.java:801)
at
org.springframework.context.annotation.ConfigurationClassParser$DeferredImportSelectorHandler.process(ConfigurationClassParser.java:771)
at
org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:185)
at
org.springframework.context.annotation.ConfigurationClassPostProcessor.processConfigBeanDefinitions(ConfigurationClassPostProcessor.java:315)
at
org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry(ConfigurationClassPostProcessor.java:232)
at
org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanDefinitionRegistryPostProcessors(PostProcessorRegistrationDelegate.java:275)
at
org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:95)
at
org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:705)
at
org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:531)
at
org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:141)
at
org.springframework.boot.SpringApplication.refresh(SpringApplication.java:744)
at
org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:391)
at
org.springframework.boot.SpringApplication.run(SpringApplication.java:312)
at
org.streampipes.container.standalone.init.StandaloneModelSubmitter.init(StandaloneModelSubmitter.java:54)
at gmbh.edi.hive_pipeline_elements.Init.main(Init.java:34)
Process finished with exit code 1
'''
My pom.xml:
'''
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0
<https://slack-redir.net/link?url=http%3A%2F%2Fmaven.apache.org%2FPOM%2F4.0.0&v=3>"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance
<https://slack-redir.net/link?url=http%3A%2F%2Fwww.w3.org%2F2001%2FXMLSchema-instance&v=3>"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
<https://slack-redir.net/link?url=http%3A%2F%2Fmaven.apache.org%2FPOM%2F4.0.0&v=3>
http://maven.apache.org/xsd/maven-4.0.0.xsd
<https://slack-redir.net/link?url=http%3A%2F%2Fmaven.apache.org%2Fxsd%2Fmaven-4.0.0.xsd&v=3>">
<modelVersion>4.0.0</modelVersion>
<groupId>gmbh.edi</groupId>
<artifactId>measurement-sink</artifactId>
<version>1.0-SNAPSHOT</version> <properties>
<sp.version>0.64.0</sp.version>
<start-class>gmbh.edi.hive_pipeline_elements.Init</start-class>
</properties> <dependencies>
<dependency>
<groupId>org.streampipes</groupId>
<artifactId>streampipes-wrapper-standalone</artifactId>
<version>${sp.version}</version>
</dependency>
<dependency>
<groupId>org.streampipes</groupId>
<artifactId>streampipes-sdk</artifactId>
<version>${sp.version}</version>
</dependency>
<dependency>
<groupId>org.streampipes</groupId>
<artifactId>streampipes-container-standalone</artifactId>
<version>${sp.version}</version>
</dependency>
<dependency>
<groupId>org.streampipes</groupId>
<artifactId>streampipes-config</artifactId>
<version>${sp.version}</version>
</dependency>
<dependency>
<groupId>org.streampipes</groupId>
<artifactId>streampipes-dataformat-json</artifactId>
<version>${sp.version}</version>
</dependency>
<dependency>
<groupId>org.streampipes</groupId>
<artifactId>streampipes-dataformat-cbor</artifactId>
<version>${sp.version}</version>
</dependency>
<dependency>
<groupId>org.streampipes</groupId>
<artifactId>streampipes-dataformat-smile</artifactId>
<version>${sp.version}</version>
</dependency>
<dependency>
<groupId>org.streampipes</groupId>
<artifactId>streampipes-dataformat-fst</artifactId>
<version>${sp.version}</version>
</dependency>
<dependency>
<groupId>org.streampipes</groupId>
<artifactId>streampipes-messaging-jms</artifactId>
<version>${sp.version}</version>
</dependency>
<dependency>
<groupId>org.streampipes</groupId>
<artifactId>streampipes-messaging-kafka</artifactId>
<version>${sp.version}</version>
</dependency>
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>2.0.1.Final</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.json/json -->
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20190722</version>
</dependency> </dependencies> <repositories>
<repository>
<id>laus</id>
<name>nexus repository</name>
<url>http://laus.fzi.de/nexus/content/repositories/public/
<https://slack-redir.net/link?url=http%3A%2F%2Flaus.fzi.de%2Fnexus%2Fcontent%2Frepositories%2Fpublic%2F&v=3></url>
<releases>
<enabled>true</enabled>
<updatePolicy>daily</updatePolicy>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories> <build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.3</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<createDependencyReducedPom>false</createDependencyReducedPom>
<transformers>
<transformer
implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>gmbh.edi.hive_pipeline_elements.Init</mainClass>
</transformer>
<transformer
implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/>
</transformers>
<filters> <filter>
<artifact>*:*</artifact>
<excludes>
<exclude>META-INF/*.SF</exclude>
<exclude>META-INF/*.DSA</exclude>
<exclude>META-INF/*.RSA</exclude>
<exclude>META-INF/maven/com.github.jsonld-java/jsonld-java/pom.xml</exclude>
<exclude>META-INF/maven/com.github.jsonld-java/jsonld-java-sesame/pom.xml
</exclude>
</excludes>
</filter>
</filters>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
</plugins>
<finalName>measurement-sink</finalName>
</build>
</project>
'''
As you can see, the container starts up normally and then crashes due to
spring.boot.
After searching for the error message I tried adding a 'META-INF' folder
under 'src/main/resources' containing a MANIFEST.MF file and a
spring.factories file.
MANIFEST.MF:
'''
Manifest-Version: 1.0 Main-Class: gmbh.edi.hive_pipeline_elements.Init
'''
spring.factories:
'''
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
org.streampipes.container.standalone.init.StandaloneModelSubmitter
'''
Those added files have changed my output to:
'''
_______ __ ______ __
| __| |_.----.-----.---.-.--------.| __ \__|.-----.-----.-----.
|__ | _| _| -__| _ | || __/ || _ | -__|__ --|
|_______|____|__| |_____|___._|__|__|__||___| |__|| __|_____|_____|
|__|
** StreamPipes Pipeline Element Container **
18:53:34.285 SP [main] INFO gmbh.edi.hive_pipeline_elements.Init -
Starting Init on doemski-XPS-13-9370 with PID 6147
(/home/doemski/dev/streampipes_custom_pipeline_elements/HivePipelineElements/target/measurement-sink.jar
started by doemski in
/home/doemski/dev/streampipes_custom_pipeline_elements/HivePipelineElements)
18:53:34.287 SP [main] INFO gmbh.edi.hive_pipeline_elements.Init - No
active profile set, falling back to default profiles: default
18:53:34.362 SP [main] ERROR o.s.boot.SpringApplication - Application
run failed
java.lang.IllegalArgumentException: No auto configuration classes found
in META-INF/spring.factories. If you are using a custom packaging, make
sure that file is correct.
at org.springframework.util.Assert.notEmpty(Assert.java:464)
at
org.springframework.boot.autoconfigure.AutoConfigurationImportSelector.getCandidateConfigurations(AutoConfigurationImportSelector.java:173)
at
org.springframework.boot.autoconfigure.AutoConfigurationImportSelector.getAutoConfigurationEntry(AutoConfigurationImportSelector.java:116)
at
org.springframework.boot.autoconfigure.AutoConfigurationImportSelector$AutoConfigurationGroup.process(AutoConfigurationImportSelector.java:396)
at
org.springframework.context.annotation.ConfigurationClassParser$DeferredImportSelectorGrouping.getImports(ConfigurationClassParser.java:875)
at
org.springframework.context.annotation.ConfigurationClassParser$DeferredImportSelectorGroupingHandler.processGroupImports(ConfigurationClassParser.java:801)
at
org.springframework.context.annotation.ConfigurationClassParser$DeferredImportSelectorHandler.process(ConfigurationClassParser.java:771)
at
org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:185)
at
org.springframework.context.annotation.ConfigurationClassPostProcessor.processConfigBeanDefinitions(ConfigurationClassPostProcessor.java:315)
at
org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry(ConfigurationClassPostProcessor.java:232)
at
org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanDefinitionRegistryPostProcessors(PostProcessorRegistrationDelegate.java:275)
at
org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:95)
at
org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:705)
at
org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:531)
at
org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:141)
at
org.springframework.boot.SpringApplication.refresh(SpringApplication.java:744)
at
org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:391)
at
org.springframework.boot.SpringApplication.run(SpringApplication.java:312)
at
org.streampipes.container.standalone.init.StandaloneModelSubmitter.init(StandaloneModelSubmitter.java:54)
at gmbh.edi.hive_pipeline_elements.Init.main(Init.java:40)
Process finished with exit code 1
'''
Any help would be appreciated greatly!
Thanks in advance,
Best Regards,
Dominick
--
____________________________________________________________
*EDI GmbH**
*/Engineering Data Intelligence/
Hermann-Weick-Weg 3
76229 Karlsruhe (Grötzingen), Deutschland
Dominick Michael Madden
Software Engineer
Telefon:+49 721 79199 155
Email: [email protected] <mailto:[email protected]>
WWW: www.edi.gmbh <http://www.edi.gmbh/>
/accDigKlein/
/Die EDI GmbH wird vertreten durch die Geschäftsführer Dr.-Ing. Mohanad
El-Haji und Dr.-Ing. Thomas Freudenmann.
Sitz der Gesellschaft ist //Karlsruhe//, HRB 723936 (Registergericht AG
Mannheim) /