Hello guys. I need advices to fix an issue: I am t...
# troubleshooting
a
Hello guys. I need advices to fix an issue: I am trying to package all libraries (flink, etc..) into a jar file. I am using Intellij Idea to build artifacts. After I run the jar file it tells me:
Caused by: java.lang.NoClassDefFoundError: org/apache/flink/streaming/api/functions/ProcessFunction
Any idea how to solve this issue? And yes, my
pom.xml
contains all required dependencies:
Copy code
<dependency>
    <groupId>commons-io</groupId>
    <artifactId>commons-io</artifactId>
    <version>2.11.0</version>
    <scope>compile</scope>
</dependency>

<dependency>
    <groupId>org.apache.flink</groupId>
    <artifactId>flink-streaming-java</artifactId>
    <version>${flink.version}</version>
    <scope>compile</scope>
</dependency>
<dependency>
    <groupId>org.apache.flink</groupId>
    <artifactId>flink-clients</artifactId>
    <version>${flink.version}</version>
    <scope>compile</scope>
</dependency>
<dependency>
    <groupId>org.apache.flink</groupId>
    <artifactId>flink-table-api-java-bridge</artifactId>
    <version>${flink.version}</version>
    <scope>compile</scope>
</dependency>
<dependency>
    <groupId>org.apache.flink</groupId>
    <artifactId>flink-table-planner-loader</artifactId>
    <version>${flink.version}</version>
    <scope>compile</scope>
</dependency>
<dependency>
    <groupId>org.apache.flink</groupId>
    <artifactId>flink-table-runtime</artifactId>
    <version>${flink.version}</version>
    <scope>compile</scope>
</dependency>

<!-- Adding jackson dependencies. They must be in the default scope (compile). -->
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>${jackson.databind.version}</version>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-annotations</artifactId>
    <version>${jackson.version}</version>
</dependency>
<!-- jackson needs jackson-datatype-jsr310 for Java 8 java.time.Instant support -->
<dependency>
    <groupId>com.fasterxml.jackson.datatype</groupId>
    <artifactId>jackson-datatype-jsr310</artifactId>
    <version>${jackson.version}</version>
</dependency>
<dependency>
    <groupId>org.apache.flink</groupId>
    <artifactId>flink-connector-kafka</artifactId>
    <version>${flink.version}</version>
</dependency>
<dependency>
    <groupId>org.apache.flink</groupId>
    <artifactId>flink-connector-base</artifactId>
    <version>${flink.version}</version>
</dependency>
<dependency>
    <groupId>org.apache.flink</groupId>
    <artifactId>flink-json</artifactId>
    <version>${flink.version}</version>
</dependency>
<dependency>
    <groupId>org.apache.kafka</groupId>
    <artifactId>kafka-clients</artifactId>
    <version>${kafka.version}</version>
</dependency>
where
Copy code
<properties>
    <flink.version>1.17.0</flink.version>
    <jackson.databind.version>2.14.0</jackson.databind.version>
    <jackson.version>2.14.0</jackson.version>
    <junit.jupiter.version>5.9.1</junit.jupiter.version>
    <kafka.version>3.2.2</kafka.version>
    <log4j.version>2.19.0</log4j.version>
    <maven.compiler.source>${target.java.version}</maven.compiler.source>
    <maven.compiler.target>${target.java.version}</maven.compiler.target>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <target.java.version>11</target.java.version>
</properties>
d
@Amir Hossein Sharifzadeh Have you tried changing the scope of the Flink core deps to
provided
? https://nightlies.apache.org/flink/flink-docs-release-1.13/docs/dev/datastream/project-configuration/#setting-up-a-project-basic-dependencies It’s generally recommended to use
provided
instead of
compile
scope for core Flink dependencies. Sometimes,
ClassDefNotFoundError
can arise from two different versions of the same dependency on the class path. Changing to
provided
might avoid that happening.