Java1.8.0_112和Apache POI的JNI错误
我刚刚在Windows7机器上安装了Java1.8.0112,jdk和jre都是64位的 我试图通过.bat文件运行我的一个程序,但出现以下错误:Java1.8.0_112和Apache POI的JNI错误,java,batch-file,java-8,java-native-interface,apache-poi,Java,Batch File,Java 8,Java Native Interface,Apache Poi,我刚刚在Windows7机器上安装了Java1.8.0112,jdk和jre都是64位的 我试图通过.bat文件运行我的一个程序,但出现以下错误: Error: A JNI error has occurred, please check your installation and try again Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/poi/ss/use rmodel/Workbook
Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/poi/ss/use
rmodel/Workbook
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.apache.poi.ss.usermodel.Workbook
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
我已经卸载并重新安装了jre,并且重新启动了我的机器。我已经确定我指向了所有需要的库
真正让我困惑的是,这个错误显示的是POI工作簿,但我有我需要的所有apache库及其相应的依赖项,所以我不确定这是一个问题的原因。正如我所说,它在jdk上的Netbeans中运行起来很有魅力,但当我通过.bat在我的桌面上运行它时,它完全崩溃了
该程序在Netbeans8环境中运行良好,该环境使用jdk 1.8.0_112和JDK8二进制文件
我的.bat文件如下所示,为了可读性,我添加了换行符:
C:\jre1.8.0_112\bin\java -cp
"T:\Netbeans Projects\MatchReport\build\classes;
S:\ADSJava\Jars\lib\poi-3.15.jar;
S:\ADSJava\Jars\lib\poi-ooxml-3.15.jar;
S:\ADSJava\Jars\lib\poi-ooxml-schemas-3.15.jar;
C:\Users\Jessica\Desktop\lib\xmlbeans-2.6.0.jar;
S:\ADSJava\Jars\lib\dom4j-1.6.1.jar;
S:\ADSJava\Jars\lib\commons-io-2.5.jar;
S:\ADSJava\Jars\lib\junit-4.12.jar;
S:\ADSJava\Jars\lib\commons-codes-1.10.jar;
S:\ADSJava\Jars\lib\commons-collections4-4.1.jar;
C:\Users\Jessica\Desktop\lib\DataServer.jar;
C:\Users\Jessica\Desktop\lib\ucanaccess-3.0.4.jar;
C:\Users\Jessica\Desktop\lib\jackcess-2.1.3.jar;
C:\Users\Jessica\Desktop\lib\xbeans.jar;
C:\Users\Jessica\Desktop\lib\commons-logging-1.0.4.jar;
C:\Users\Jessica\Desktop\lib\hsqldb.jar;
C:\Users\Jessica\Desktop\lib\commons-lang-2.4.jar"
ads.ADSMatchReport2
"Toyota Of Turnersville Control.txt" 2>&1> MatchReportResults.txt
任何帮助或指导都将不胜感激,谢谢 找到了解决办法。.bat文件不喜欢我在混合驱动器上使用库。将所有库移动到my
C:
或网络S:
驱动器解决了此问题
无论出于何种原因,Netbeans能够处理多个位置的库,但.bat文件不能。不确定这是否有任何区别,但这些网络映射共享(T:,S:)是吗?当你把这些罐子移到C:,会发生什么?当您使用不同/旧的JDK时会发生什么?如果只使用非常基本的POI示例而不使用其他与POI无关的LIB,会发生什么情况?似乎网络驱动器
S:
没有正确映射。如果打开一个CMD
并键入S:
[Enter],然后键入dir ADSJava
[Enter],会显示目录列表吗?对于kiwiwings和Axel,这些驱动器都是网络驱动器,并且都是映射的,我有与这两者交互的程序,当我在ADSJava上列出目录时,我会得到预期的7个文件和25个子目录的列表。我要看看如何把poi罐子放在C:上,看看会发生什么。谢谢你们两位的反馈!