从命令提示符执行.jar文件时发生了JNI错误
我创建了两个java文件my maven项目一个是POJO类,另一个是java主类文件。 我想将我的项目作为可执行jar文件,我想使用java -jar命令在外部运行。
请找到我的pom.xml文件
4.0.0 ElasticSearchUtility ElasticSearchUtility 1.0.0-SNAPSHOT jar org.elasticsearch elasticsearch 6.1.2 org.elasticsearch.client elasticsearch-rest-high-level-client 6.1.2 org.elasticsearch.client rest 5.1.2 org.apache.maven.plugins maven-eclipse-plugin 2.9 true false org.apache.maven.plugins maven-compiler-plugin 2.3.2 1.8 1.8 org.apache.maven.plugins maven-jar-plugin **/log4j.properties true com.es.utility.DocumentIndex dependency-jars/
在使用java -jar
命令执行我的jar文件时。 我得到了错误
Error: A JNI error has occurred, please check your installation and try again Exception in thread "main" java.lang.NoClassDefFoundError: org/elasticsearch/Ela sticsearchException at java.lang.Class.getDeclaredMethods0(Native Method) at java.lang.Class.privateGetDeclaredMethods(Unknown Source) at java.lang.Class.privateGetMethodRecursive(Unknown Source) at java.lang.Class.getMethod0(Unknown Source) at java.lang.Class.getMethod(Unknown Source) at sun.launcher.LauncherHelper.validateMainClass(Unknown Source) at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source) Caused by: java.lang.ClassNotFoundException: org.elasticsearch.ElasticsearchExce ption at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) ... 7 more
请找到我的项目结构:
创建jar-with-dependencies
。
maven-assembly-plugin fully.qualified.MainClass jar-with-dependencies make-jar package single
这将创建包含其中所有依赖项的FatJar
或UberJar
。