Ошибка JNI в библиотеках Apache POI - PullRequest
0 голосов
/ 02 июля 2018

Итак, я сейчас пытаюсь выполнить программу на Java из командной строки в Windows.

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. если есть решение или документация, вы можете отправить ссылку или что-нибудь связанное.

1 Ответ

0 голосов
/ 04 июля 2018

Решение

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 и другие внешние библиотеки с помощью ". \ *;" текущий каталог со всеми внешними библиотеками.

...