Создайте внешний jar-файл и добавьте его в Netbeans 8.2 - PullRequest
0 голосов
/ 15 октября 2019

Мы пытались создать JAR-файлы из загруженной нами версии LanguageTool (LT) Desktop, которая содержит различные JAR-файлы. LT по этой ссылке сделал заявление, что нам нужны все файлы в этих папках libs org и META-INF в нашем проекте. LT ответил, что у них нет опыта работы с Netbeans или JavaFX.
Направления LT
Приложение было построено на Windows 7 с Netbeans 8.2 в качестве JavaFX 8 и Maven JDK 1.8

Мы постарались, следуя этому руководству, автор не особо интересовался правильным форматированием кода и не упомянул, что LT не является поточно-ориентированным. Мы редко работаем с потоками, но думаем, что наш код правильный?
Учебник

Чтобы установить Class AmericanEnglish.class, который находится в zip-файле LT Desktop, который мы извлекли, мы использовали этот процесс
cd C: \ Users \ Me\ Documents \ AAAAA LT UnZip \ LanguageTool-4.7 \ LanguageTool-4.7
jar cf languagesLIBS.jar libs / *

jar cf languagesORG.jar org / *

jar cf languagesMETA.jarMETA-INF / *

Вот где это становится странным для наших ограниченных знаний о добавлении зависимостей в Netbeans
1. Откройте вкладку Projects.
2. Щелкните правой кнопкой мыши на Dependencies.
3. Выберите Добавить зависимость.
4. Установите groupId на: language (может быть любым)
5. Установите artifactId на: en (может быть любым)
6. Установите версию: 4.7 (может быть любым)
7. Нажмите кнопку Добавить, чтобы продолжить.
Зависимость добавляется в pom.xml и отображается под узлом "Библиотеки" проекта Maven. Продолжить:
1. Развернуть Зависимости.
2. Щелкните правой кнопкой мыши библиотеку (например, group.id).
3. Выберите Вручную установить артефакт.
4. Установите Artifact для установки с путем к файлу архива Java (.jar).
5. Нажмите Установить локально.

Этот процесс поместил AmericanEnglish.class в JAR, и он обнаружен Netbeans
import org.languagetool.JLanguageTool;
import org.languagetool.language.AmericanEnglish;
import org.languagetool.rules.RuleMatch;

Вот ошибка, когда мы пытаемся заполнить JLanguageTool AmericanEnglish

Хотя ошибка NoClassDefFoundError может показывать, что приложение не может найти
AmericanEnglish.class, и это является причиной ошибки ClassNotFoundException

Наш вопрос, очевидно, заключается в том, как мы можем это исправить?
И правильно ли мы создаем внешние файлы JAR?

Exception in thread "Thread-4" java.lang.NoClassDefFoundError: com/google/common/cache/CacheLoader
at com.mycompany.maventest.CheckSpellController.lambda$ini$0(CheckSpellController.java:43)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.ClassNotFoundException: com.google.common.cache.CacheLoader
at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)

Мы также видим эти предупреждения при очистке и сборке проекта
POM для languagetool: LIBS: jar: 4.7 отсутствует, информация о зависимостях недоступна
POM для languagetool: ORG: jar: 4.7 отсутствует, информация о зависимостях недоступна
POM для languagetool: META: jar: 4.7 отсутствует, информация о зависимостях недоступна

exec-maven-plugin: 1.2. 1: exec (unpack-dependencies) @ mavenTEST
Когда запускается Clean and Build, мы видим распаковку зависимостей
Вот несколько строк кода, которые вызывают ошибку

static JLanguageTool langTool;

public void ini(){
  new Thread(() -> {
      langTool = new JLanguageTool(new AmericanEnglish());
  }).start();  
}

Метод ini () вызывается из метода инициализации

AmericanEnglish class

Необходимые файлы JARнаходятся в папке Зависимости
Проект импортирует эти файлы

1 Ответ

1 голос
/ 16 октября 2019

Вам нужно использовать реальный JAR и процесс, в котором вы думали, что это бит ODD
Неправильный способ добавления файлов JAR. Извлеченная папка ZIP содержит все золото или, если можно так сказать, JAR. Вот несколько снимков экрана и направления. Тем не менее, мы все еще получаем NoClassDefFoundError, поэтому мы будем работать над исправлением этой части вопроса

Удалите три JAR-файла, которые вы добавили LIBS-4.7.jar META-4.7.jar и ORG-4.7.jar
Мы также предлагаем открыть папку .m2 и в / repository / org / languagetool удалить папку languagetool. Не волнуйтесь, все будет воссоздано.
Щелкните правой кнопкой мыши по папке «Зависимости» и выберите «Добавить зависимость»
. В текстовом поле «Запрос» введите «org.languagetool»
. В этом комментарии мы не нашли languagetool 4.7 JAR как центральный. местный ? ?
Возможно, вы захотите попробовать использовать центральный JAR 4.6 *
Разверните папку org.languagetool: languagetool-core и выберите 4.7.jar
Как только этот JAR окажется в папке Dependency, щелкните правой кнопкой мыши и выберите Копировать. Расположение
Теперь щелкните правой кнопкой мыши тот же JAR-файл еще раз и выберите «Установить артефакт вручную»
. В текстовом поле «Артефакт для установки» вставьте с помощью Ctrl + V
. Вы попадете в местоположение JAR, выберите его и нажмитеВолшебный артефакт добавлен
Обратите внимание на то, что language-en-4.7 мы создали этот JAR-файл, потому что мы не смогли найти AmericanEnglish.class ни в одном из загруженных файлов. См. Последний снимок экрана
Вот снимки экрана в порядке, соответствующем указанному выше направлению
First Step
Second Step
Third Step
JAR's We Added
AmericanEnglish.class

Я не задерживаю дыхание, используя загруженный 4.7JAR, s - лучшая идея
Вы можете попробовать обратиться к Maven и Language Tool и спросить, почему LT 4.7 отсутствует в хранилище!
Best of Luck

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...