Apache POI 库中的 JNI 错误
JNI Error in Apache POI libraries
所以我目前正在尝试从 Windows 中的命令行执行 Java 程序。
import java.io.*;
import java.util.*;
import org.apache.poi.xssf.usermodel.*;
import org.apache.poi.ss.usermodel.*;
在命令行中我已经解释了多个库,Apache (3.17) 出现了错误。我检查了构建路径,所有外部库都在命令行中编译没有问题
cd C:\Users\Joshuab\Desktop\ATS\workExcelApplication\src
set path=%path%;C:\Program Files\Java\jdk1.8.0_172\bin
javac -cp C:\Users\Joshuab\Desktop\ATS\ATS\API\poi-3.17\/* Check.java
java Check
在命令行中的 java Check
我收到错误
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/Row
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.Row
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
我四处寻找解决方案,发现其他人也有类似问题,但没有解决方案。所以我接下来的问题是:
- what/where 是问题所在。
- 我该如何解决
- 如果有解决方案或文档,您可以发送 link 或任何相关信息。
解决方案
cd C:\Users\Joshuab\Desktop\ATS\workExcelApplication\src
set path=C:\Program Files\Java\jdk1.8.0_172\bin
java -cp ".\*;" Check
如果其他人遇到与此类似的问题,我花了一段时间才弄清楚并帮助他们。我在 javac 文档中找到了解决方案,您可以在此处找到:https://docs.oracle.com/javase/6/docs/technotes/tools/windows/javac.html
所以当使用解释器时你需要指定API的和其他外部库,用“.\ *;”作为所有外部库的当前目录。
所以我目前正在尝试从 Windows 中的命令行执行 Java 程序。
import java.io.*;
import java.util.*;
import org.apache.poi.xssf.usermodel.*;
import org.apache.poi.ss.usermodel.*;
在命令行中我已经解释了多个库,Apache (3.17) 出现了错误。我检查了构建路径,所有外部库都在命令行中编译没有问题
cd C:\Users\Joshuab\Desktop\ATS\workExcelApplication\src
set path=%path%;C:\Program Files\Java\jdk1.8.0_172\bin
javac -cp C:\Users\Joshuab\Desktop\ATS\ATS\API\poi-3.17\/* Check.java
java Check
在命令行中的 java Check
我收到错误
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/Row
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.Row
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
我四处寻找解决方案,发现其他人也有类似问题,但没有解决方案。所以我接下来的问题是:
- what/where 是问题所在。
- 我该如何解决
- 如果有解决方案或文档,您可以发送 link 或任何相关信息。
解决方案
cd C:\Users\Joshuab\Desktop\ATS\workExcelApplication\src
set path=C:\Program Files\Java\jdk1.8.0_172\bin
java -cp ".\*;" Check
如果其他人遇到与此类似的问题,我花了一段时间才弄清楚并帮助他们。我在 javac 文档中找到了解决方案,您可以在此处找到:https://docs.oracle.com/javase/6/docs/technotes/tools/windows/javac.html
所以当使用解释器时你需要指定API的和其他外部库,用“.\ *;”作为所有外部库的当前目录。