Flink1.9“Error: A JNI error has occurred”

Keywords: Java jvm Maven Hadoop

background

Recently, companies are building big data systems, and architects recommend using Flink to build them.So this day, I'm investigating Flink in my own virtual machine environment (Ubuntu 16.4).

from ververica I learned the fundamentals of flink in school, because I worked on python data processing and analysis before I learned Java, and I didn't specialize in maven.So from FLINK Official Tutorial Pull up a project template for JAVA, and from ververica Find a copy from a big guy here Flink Tutorial demo Real Time Popular Merchandise Recommendation Try tuning in locally.

Problem Phenomena

I have typed through the tutorial one step at a time and no errors were detected in the code in the integrated environment, but errors were found at runtime.Finally, the source copy on GitHub was found to run once and still error.The error message is:

Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/flink/api/common/typeinfo/TypeInformation

Detailed error information is:

/usr/lib/jvm/java-8-openjdk-amd64/bin/java -javaagent:/usr/local/idea/lib/idea_rt.jar=40232:/usr/local/idea/bin -Dfile.encoding=UTF-8 -classpath /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/charsets.jar:/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/ext/cldrdata.jar:/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/ext/dnsns.jar:/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/ext/icedtea-sound.jar:/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/ext/jaccess.jar:/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/ext/localedata.jar:/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/ext/nashorn.jar:/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/ext/sunec.jar:/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/ext/sunjce_provider.jar:/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/ext/sunpkcs11.jar:/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/ext/zipfs.jar:/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/jce.jar:/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/jsse.jar:/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/management-agent.jar:/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/resources.jar:/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/rt.jar:/home/hadoop/MyFlink/testFlink/quickstart/target/classes:/home/hadoop/.m2/repository/org/slf4j/slf4j-api/1.7.15/slf4j-api-1.7.15.jar:/home/hadoop/.m2/repository/org/slf4j/slf4j-log4j12/1.7.7/slf4j-log4j12-1.7.7.jar:/home/hadoop/.m2/repository/log4j/log4j/1.2.17/log4j-1.2.17.jar org.myorg.quickstart.HotItems
Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/flink/api/common/typeinfo/TypeInformation
	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 sun.launcher.LauncherHelper.validateMainClass(LauncherHelper.java:544)
	at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:526)
Caused by: java.lang.ClassNotFoundException: org.apache.flink.api.common.typeinfo.TypeInformation
	at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:419)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:352)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:352)
	... 7 more

Process finished with exit code 1

Reasons for the problem

Considering that there are no errors in the code in the integrated development environment, this is not a problem with code logic.Because after retrieving the related problems on the Internet, the big man pointed out that there was a problem with the officially provided maven configuration.

Find the pom.xml file downloaded from the flink website and find that its scope tag is set to provided

Role of finding maven's scope label

Because maven's principle is that conventions are larger than configurations, it is a better strategy for beginners to use the default configuration to let maven's logic find the appropriate package.The provided configuration provided by the official website may require additional clarification elsewhere, as I am not familiar with the use of Maven on this side, so replace the scope configuration in the pom.xml file with compile to ensure the proper functioning of the program demo.

Solution

Replace all scope configurations in the pom.xml file with compile and try compiling the execution again.The program is compiled and the result can be output normally.

Reference material

https://www.cnblogs.com/hzzll/p/6738955.html

Two original articles have been published. Approved 0. Visits 5210
Private letter follow

Posted by aperales10 on Sun, 16 Feb 2020 18:33:05 -0800