[ 
https://issues.apache.org/jira/browse/FLINK-3511?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15167446#comment-15167446
 ] 

Márton Balassi edited comment on FLINK-3511 at 2/25/16 5:03 PM:
----------------------------------------------------------------

Somewhat sensible for me, but it just propagates the problem to 
flink-gelly-examples then, doesn't it?


was (Author: mbalassi):
Somewhat sensible for me, but it just propagates the problem to 
flink-gelly-examples then, doesn't?

> Flink library examples not runnable withput adding dependencies
> ---------------------------------------------------------------
>
>                 Key: FLINK-3511
>                 URL: https://issues.apache.org/jira/browse/FLINK-3511
>             Project: Flink
>          Issue Type: Bug
>          Components: Build System
>    Affects Versions: 1.0.0
>            Reporter: Márton Balassi
>
> Recent changes to the build [1] where many libraries got their core 
> dependencies (the ones included in the flink-dist fat jar) moved to the 
> provided scope.
> The reasoning was that when submitting to the Flink cluster the application 
> already has these dependencies, while when a user writes a program against 
> these libraries she will include the core dependencies explicitly anyway.
> There is one other case of usage however, namely when someone is trying to 
> run an application defined in these libraries depending on the core jars. To 
> give an example if you were to run the Gelly ConnectedComponents example [2] 
> from an IDE after importing Flink (or running with java -jar without 
> including the flink fat jar in the classpath) you would receive the following 
> class not found exception as per the current master:
> Exception in thread "main" java.lang.NoClassDefFoundError: 
> org/apache/flink/api/common/ProgramDescription
>       at java.lang.ClassLoader.defineClass1(Native Method)
>       at java.lang.ClassLoader.defineClass(ClassLoader.java:760)
>       at 
> java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
>       at java.net.URLClassLoader.defineClass(URLClassLoader.java:467)
>       at java.net.URLClassLoader.access$100(URLClassLoader.java:73)
>       at java.net.URLClassLoader$1.run(URLClassLoader.java:368)
>       at java.net.URLClassLoader$1.run(URLClassLoader.java:362)
>       at java.security.AccessController.doPrivileged(Native Method)
>       at java.net.URLClassLoader.findClass(URLClassLoader.java:361)
>       at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
>       at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
>       at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
>       at java.lang.Class.forName0(Native Method)
>       at java.lang.Class.forName(Class.java:264)
>       at com.intellij.rt.execution.application.AppMain.main(AppMain.java:122)
> Where the class missing in runtime is in flink-core, a transitive dependency 
> of the jars moved to the provided scope.
> Funny thing is we have tests in place to run our examples, but those add test 
> scope dependencies re-adding the missing classes, so it is never discovered.
> I agree with the original purpose of PR #1683, but also think that the 
> current state makes for very inconvenient user experience.
> I would like to open a discussion on how and when to resolve the issue given 
> the release of 1.0.0.
> 1. Is it a release blocker?
> 2. Should the change be reverted or is it sufficient to have proper 
> documentation around it? Maybe a maven profile for explicitly for developing 
> Flink without the provided scope?
> Note that the issue was originally reported by Gábor Gévay.
> [1] https://github.com/apache/flink/pull/1683
> [2] 
> https://github.com/apache/flink/blob/master/flink-libraries/flink-gelly/src/main/java/org/apache/flink/graph/example/ConnectedComponents.java



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to