Java1.8.0_112和Apache POI的JNI错误

时间:2017-01-21 00:20:19

标签: java batch-file java-8 java-native-interface apache-poi

我刚刚在我的Windows 7机器上安装了Java1.8.0_112,jdk和jre 64bit。

我试图通过.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
    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环境中运行得很好,该环境使用的是1.8.0_112的jdk和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

非常感谢任何帮助或指导,谢谢!

1 个答案:

答案 0 :(得分:0)

找到解决方案。 .bat文件不喜欢我在混合驱动器上有库。将所有库移至我的C:或网络S:驱动器可解决此问题。

无论出于何种原因,Netbeans能够处理多个位置的库,但.bat文件却没有。