Невозможно запустить задание Flink при отправке файла jar, но в противном случае программа работает в Intellij

Моя программа Flink успешно работает в IntellijIdea, но когда я создаю файл jar этой программы, чтобы отправить его как jar, она показывает мне следующую ошибку

ava.lang.RuntimeException: Could not look up the main(String[]) method from the class org.carleton.cep.monitoring.latest.MobileCEP: org/apache/flink/cep/pattern/conditions/IterativeCondition
    at org.apache.flink.client.program.PackagedProgram.hasMainMethod(PackagedProgram.java:480)
    at org.apache.flink.client.program.PackagedProgram.<init>(PackagedProgram.java:217)
    at org.apache.flink.client.program.PackagedProgram.<init>(PackagedProgram.java:148)
    at org.apache.flink.runtime.webmonitor.handlers.JarActionHandler.getJobGraphAndClassLoader(JarActionHandler.java:91)
    at org.apache.flink.runtime.webmonitor.handlers.JarPlanHandler.handleRequest(JarPlanHandler.java:42)
    at org.apache.flink.runtime.webmonitor.RuntimeMonitorHandler.respondAsLeader(RuntimeMonitorHandler.java:88)
    at org.apache.flink.runtime.webmonitor.RuntimeMonitorHandlerBase.channelRead0(RuntimeMonitorHandlerBase.java:84)
    at org.apache.flink.runtime.webmonitor.RuntimeMonitorHandlerBase.channelRead0(RuntimeMonitorHandlerBase.java:44)
    at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:339)
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:324)
    at io.netty.handler.codec.http.router.Handler.routed(Handler.java:62)
    at io.netty.handler.codec.http.router.DualAbstractHandler.channelRead0(DualAbstractHandler.java:57)
    at io.netty.handler.codec.http.router.DualAbstractHandler.channelRead0(DualAbstractHandler.java:20)
    at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:339)
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:324)
    at org.apache.flink.runtime.webmonitor.HttpRequestHandler.channelRead0(HttpRequestHandler.java:105)
    at org.apache.flink.runtime.webmonitor.HttpRequestHandler.channelRead0(HttpRequestHandler.java:65)
    at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:339)
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:324)
    at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:242)
    at io.netty.channel.CombinedChannelDuplexHandler.channelRead(CombinedChannelDuplexHandler.java:147)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:339)
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:324)
    at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:847)
    at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:131)
    at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:511)
    at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:468)
    at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:382)
    at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:354)
    at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:111)
    at io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:137)
    at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.NoClassDefFoundError: org/apache/flink/cep/pattern/conditions/IterativeCondition
    at java.lang.Class.getDeclaredMethods0(Native Method)
    at java.lang.Class.privateGetDeclaredMethods(Class.java:2701)
    at java.lang.Class.privateGetMethodRecursive(Class.java:3048)
    at java.lang.Class.getMethod0(Class.java:3018)
    at java.lang.Class.getMethod(Class.java:1784)
    at org.apache.flink.client.program.PackagedProgram.hasMainMethod(PackagedProgram.java:474)
    ... 34 more
Caused by: java.lang.ClassNotFoundException: org.apache.flink.cep.pattern.conditions.IterativeCondition
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 40 more

Я позаботился о пути к классам в файле манифеста. Раньше я также мог работать с моей банкой.

Кажется, есть некоторая проблема с моим кодом шаблона, который приведен ниже.

 // detecting pattern

    Pattern<JoinedEvent, ?> pattern = Pattern.<JoinedEvent>begin("start")
            .subtype(JoinedEvent.class).
                    where(new SimpleCondition<JoinedEvent>() {
                        @Override
                        public boolean filter(JoinedEvent streamEvent) throws Exception {

                            return streamEvent.getRRInterval()>= 10 ;
                        }
                    })

            .subtype(JoinedEvent.class).where(new SimpleCondition<JoinedEvent>() {
                @Override
                public boolean filter(JoinedEvent streamEvent) throws Exception {
                    return streamEvent.getQrsInterval() >= 10 ;
                }
            } )
            .within(Time.milliseconds(WindowLength));

person Amarjit Dhillon    schedule 23.10.2017    source источник
comment
mvn clean/install работает успешно?   -  person MIkCode    schedule 24.10.2017
comment
Похоже, ответ здесь: stackoverflow.com/a/46927694/1254552. Когда вы создаете jar , вы не включаете все необходимые классы.   -  person Yaroslav    schedule 26.10.2017


Ответы (1)


Убедитесь, что область зависимости настроена на компиляцию и не предоставлена. Вы можете либо установить его в pom.xml, либо перейти в «Файл»> «Структура проекта»> «Модули» и увидеть справа вкладку зависимостей. На этой вкладке вы увидите зависимости проекта. Найдите зависимость для flink.cep (не уверен, находится ли она в основной библиотеке flink или в дополнительной зависимости) и настройте область для компиляции, если она еще не установлена. Затем, как указал @MikCode в своем комментарии, запустите mvn clean install, чтобы убедиться, что все настроено, и повторите попытку.

person Jicaar    schedule 25.10.2017