首页 > 解决方案 > Apache POI 库中的 JNI 错误

问题描述

所以我目前正在尝试从 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

我四处寻找解决方案,找到其他有类似问题的人,但没有解决方案。所以我的问题是:

  1. 什么/哪里有问题。
  2. 我该如何解决
  3. 如果有解决方案或文档,您可以发送链接或任何相关内容。

标签: javacmdjavac

解决方案


解决方案

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 和其他外部库,使用 ".\ *;" 是所有外部库的当前目录。


推荐阅读