Hi, With cluster.getConfig().disableClosureCleaner() it works, thanks ; what are the sides effect of this workaround?
My code is just a plain Junit test, the only code that is called outside of what I gave is : public static String chercher(String nom) { String retour = null; URL url = Thread.currentThread().getContextClassLoader().getResource(nom); if (null == url) { url = MiscTools.class.getResource(nom); } if (null != url) { retour = url.getFile(); } if (null == retour) { retour = nom; } return retour; } My JRE version is Oracle 1.8.0.31. I can send you a zip file if you like. Arnaud -----Message d'origine----- De : Aljoscha Krettek [mailto:aljos...@apache.org] Envoyé : vendredi 24 avril 2015 12:05 À : user@flink.apache.org Objet : Re: Flink Java 8 problem (no lambda, simple code) Unfortunately I can't reproduce your error on my machine (OS X, java 8) i created a fresh maven project from your pom and source example and it runs. As a workaround you can call cluster.getConfig().disableClosureCleaner(). The closure cleaner normally cleans closures from unneeded stuff because we send them over the network. Here, the flatMap anonymous function has a closure. Is there any other code inside your main function that could cause this? On Fri, Apr 24, 2015 at 11:34 AM, Stephan Ewen <se...@apache.org> wrote: > One thing I noticed a while back with ASM version 4 and Java 8 had > issues - but those were related to Java 8 lambdas. > > Back then, bumping ASM to version 5 helped it. Not sure if this is the > same problem, though, since you do not seem to use Java 8 lambdas... > > On Fri, Apr 24, 2015 at 11:32 AM, Aljoscha Krettek > <aljos...@apache.org> > wrote: >> >> I'm looking into it, >> >> On Fri, Apr 24, 2015 at 11:13 AM, LINZ, Arnaud >> <al...@bouyguestelecom.fr> >> wrote: >> > Hi, >> > >> > >> > >> > I have the following simple code that works well in Java 7 : >> > >> > >> > >> > final ExecutionEnvironment cluster = >> > ExecutionEnvironment.createLocalEnvironment(); >> > >> > final DataSet<String> textFile = >> > cluster.readTextFile(MiscTools.chercher("jeuDeDonnees.txt")); >> > >> > final DataSet<Tuple2<String, Integer>> words = textFile >> > >> > .flatMap(new FlatMapFunction<String, Tuple2<String, >> > Integer>>() >> > { >> > >> > @Override >> > >> > public void flatMap(String ligne, >> > Collector<Tuple2<String, >> > Integer>> out) { >> > >> > for (final String word : ligne.split("\\s")) { >> > >> > out.collect(new Tuple2<String, >> > Integer>(word, 1)); >> > >> > } >> > >> > } >> > >> > }); >> > >> > final DataSet<Tuple2<String, Integer>> wordsCount = >> > words.groupBy(0).sum(1); >> > >> > wordsCount.print(); >> > >> > cluster.execute("testFlink"); >> > >> > >> > >> > When compiled in Java 8 and executed (Oracle JDK or Eclipse JDT >> > compiler, same result) I have the following stack trace (under >> > eclipse or with maven >> > test) : >> > >> > >> > >> > java.lang.IllegalArgumentException: null >> > >> > at >> > org.apache.flink.shaded.org.objectweb.asm.ClassReader.<init>(Unknow >> > n >> > Source) >> > >> > at >> > org.apache.flink.shaded.org.objectweb.asm.ClassReader.<init>(Unknow >> > n >> > Source) >> > >> > at >> > org.apache.flink.shaded.org.objectweb.asm.ClassReader.<init>(Unknow >> > n >> > Source) >> > >> > at >> > >> > org.apache.flink.api.java.ClosureCleaner.getClassReader(ClosureClea >> > ner.java:40) >> > >> > at >> > >> > org.apache.flink.api.java.ClosureCleaner.cleanThis0(ClosureCleaner. >> > java:67) >> > >> > at >> > org.apache.flink.api.java.ClosureCleaner.clean(ClosureCleaner.java: >> > 54) >> > >> > at org.apache.flink.api.java.DataSet.clean(DataSet.java:185) >> > >> > at >> > org.apache.flink.api.java.DataSet.flatMap(DataSet.java:266) >> > >> > >> > >> > >> > >> > Any idea why ? >> > >> > >> > >> > Here is my pom.xml : >> > >> > >> > >> > <build> >> > >> > <plugins> >> > >> > <!-- Surefire plugin --> >> > >> > <plugin> >> > >> > >> > <groupId>org.apache.maven.plugins</groupId> >> > >> > >> > <artifactId>maven-surefire-plugin</artifactId> >> > >> > <version>2.15</version> >> > >> > <configuration> >> > >> > >> > <jvm>${env.JAVA_HOME}/bin/java</jvm> >> > >> > <forkMode>once</forkMode> >> > >> > </configuration> >> > >> > </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> >> > >> > <compilerId>jdt</compilerId> >> > >> > <!-- >> > executable>${env.JAVA_HOME}/bin/javac</executable> --> >> > >> > </configuration> >> > >> > <dependencies> >> > >> > <!-- This dependency provides the >> > implementation of compiler "jdt": --> >> > >> > <dependency> >> > >> > >> > <groupId>org.eclipse.tycho</groupId> >> > >> > >> > <artifactId>tycho-compiler-jdt</artifactId> >> > >> > <version>0.21.0</version> >> > >> > </dependency> >> > >> > </dependencies> >> > >> > </plugin> >> > >> > </plugins> >> > >> > <pluginManagement> >> > >> > <plugins> >> > >> > <!--This plugin's configuration is used >> > to store Eclipse m2e settings >> > >> > only. It has no influence on the >> > Maven build itself. --> >> > >> > <plugin> >> > >> > >> > <groupId>org.eclipse.m2e</groupId> >> > >> > >> > <artifactId>lifecycle-mapping</artifactId> >> > >> > <version>1.0.0</version> >> > >> > <configuration> >> > >> > <lifecycleMappingMetadata> >> > >> > <pluginExecutions> >> > >> > >> > <pluginExecution> >> > >> > >> > <pluginExecutionFilter> >> > >> > >> > <groupId> >> > >> > >> > org.apache.maven.plugins >> > >> > >> > </groupId> >> > >> > >> > <artifactId> >> > >> > >> > maven-compiler-plugin >> > >> > >> > </artifactId> >> > >> > >> > <versionRange> >> > >> > >> > [3.1,) >> > >> > >> > </versionRange> >> > >> > >> > <goals> >> > >> > >> > <goal>compile</goal> >> > >> > >> > </goals> >> > >> > >> > </pluginExecutionFilter> >> > >> > >> > <action> >> > >> > >> > <ignore></ignore> >> > >> > >> > </action> >> > >> > >> > </pluginExecution> >> > >> > </pluginExecutions> >> > >> > </lifecycleMappingMetadata> >> > >> > </configuration> >> > >> > </plugin> >> > >> > </plugins> >> > >> > </pluginManagement> >> > >> > </build> >> > >> > >> > >> > <dependencies> >> > >> > <dependency> >> > >> > <groupId>junit</groupId> >> > >> > <artifactId>junit</artifactId> >> > >> > <version>4.10</version> >> > >> > <scope>test</scope> >> > >> > </dependency> >> > >> > >> > >> > <!-- Flink --> >> > >> > <dependency> >> > >> > <groupId>org.apache.flink</groupId> >> > >> > <artifactId>flink-java</artifactId> >> > >> > <version>0.9.0-milestone-1</version> >> > >> > </dependency> >> > >> > <dependency> >> > >> > <groupId>org.apache.flink</groupId> >> > >> > <artifactId>flink-clients</artifactId> >> > >> > <version>0.9.0-milestone-1</version> >> > >> > </dependency> >> > >> > >> > >> > >> > >> > </dependencies> >> > >> > >> > >> > A simple replacement of “1.8” by “1.7” in the pom makes the program >> > work. >> > >> > >> > >> > Regards, >> > >> > Arnaud >> > >> > >> > ________________________________ >> > >> > L'intégrité de ce message n'étant pas assurée sur internet, la >> > société expéditrice ne peut être tenue responsable de son contenu >> > ni de ses pièces jointes. Toute utilisation ou diffusion non >> > autorisée est interdite. Si vous n'êtes pas destinataire de ce >> > message, merci de le détruire et d'avertir l'expéditeur. >> > >> > The integrity of this message cannot be guaranteed on the Internet. >> > The company that sent this message cannot therefore be held liable >> > for its content nor attachments. Any unauthorized use or >> > dissemination is prohibited. If you are not the intended recipient >> > of this message, then please delete it and notify the sender. > >