Your jar file contains two copies of "defaults.yaml". You need to make sure that there is at max one.
Do you include "storm-core.jar" in your own jar? For this case, exclude "defaults.yaml" that is contained in "storm-core.jar" -Matthias On 07/15/2015 02:08 PM, charlie quillard wrote: > Hi, > > > Just following up on my previous email, I found a similar problem on > "stack overflow" ( > http://stackoverflow.com/questions/29917158/apache-storm-java-lang-noclassdeffounderror-com-google-gson-gson > ), this one gives a solution with the *maven-shade-plugin .* > > I tried this solution and that partially works but I had the next error : > > /java.lang.RuntimeException: Found multiple defaults.yaml resources. > You're probably bundling the Storm jars with your topology jar/ > > > // > > I someone can help me, i would appreciate it. > > Charlie > ** > > > > ------------------------------------------------------------------------ > *De :* charlie quillard > *Envoyé :* vendredi 10 juillet 2015 16:04 > *À :* user@storm.apache.org > *Objet :* Problem to submit a topology to my storm cluster > > > Hello, > > > > I want to execute a C++ lib on Storm and to implement this native lib in > a bolt thought Swig. It doesn’t work : I have a problem to submit a > storm topology to my storm cluster. > > > > First, I generated a c++ library. I want to use it in Java with Swig (an > evolved wrapper based on JNI). The swig wrapper generate a java library > (.jar) and a shared library (.so). > > > > Then, I create the jar of the Storm application with Maven. This jar > file contain : my java classes, my swig jar and my shared library (.so). > > > > I include the Swig jar library in the pom.xml with theses following lines : > > > </dependency> > <groupId>com.example</groupId> > <artifactId>JavaEncoder</artifactId> > <scope>system</scope> > <version>1.0</version> > > <systemPath>${project}/src/main/resources/JavaNativeEncoder.jar</systemPath> > </dependency>/ > > / / > > I enable the jar generation plug-in in the pom.xml with these following > lines : > > > /<build> > <plugins> > <plugin> > <artifactId>maven-assembly-plugin</artifactId> > <configuration> > <descriptorRefs> > <descriptorRef>jar-with-dependencies</descriptorRef> > </descriptorRefs> > <archive> > <manifest> > <mainClass>com.example.JavaEncoder.PerfTopology</mainClass> > </manifest> > </archive> > </configuration> > </plugin>/ > > / //</plugins>/ > > /</build>/ > > > > > > When I submit my topology to my cluster, I have the following Error : > > > > /Exception in thread "main" java.lang.NoClassDefFoundError: > com/example/JavaEncoder/NativeEncoder > at com.example.JavaEncoder.PerfTopology.main(PerfTopology.java:59) > Caused by: java.lang.ClassNotFoundException: > com.example.JavaEncoder.NativeEncoder > at java.net.URLClassLoader$1.run(URLClassLoader.java:366) > at java.net.URLClassLoader$1.run(URLClassLoader.java:355) > at java.security.AccessController.doPrivileged(Native Method) > at java.net.URLClassLoader.findClass(URLClassLoader.java:354) > at java.lang.ClassLoader.loadClass(ClassLoader.java:425) > at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) > at java.lang.ClassLoader.loadClass(ClassLoader.java:358/) > > > > I checked that if I unzipped the generated file, the swig class and the > .so file is well contained in the Storm jar file. > > > > To conclude, I don't understand why that does not works if someone have > an idea, i would appreciate it. > > > Thanks in advance, > > > Charlie QUILLARD >
signature.asc
Description: OpenPGP digital signature