我们一直在尝试从我们下载的LanguageTool(LT)桌面版本创建JAR文件,其中包含各种JAR文件。 LT在此链接中声明,我们需要项目中这些文件夹 libs org和META-INF 中的所有文件。 LT回复说,他们没有使用Netbeans或JavaFX的经验。
LT Directions
该应用程序是在Windows 7和Netbeans 8.2(作为JavaFX 8和Maven JDK 1.8)上构建的。
我们尝试按照本教程进行操作,因此作者对适当的代码格式没有多大兴趣,并且没有提及LT不是线程安全的。我们很少使用线程,但是认为我们的代码正确吗?
TUTORIAL
要安装我们提取的LT Desktop zip文件中的Class AmericanEnglish.class,我们使用了此过程
cd C:\ Users \ Me \ Documents \ A A A A A LT UnZip \ LanguageTool-4.7 \ LanguageTool-4.7
jar cf语言LIBS.jar libs / *
jar cf种语言ORG.jar org / *
jar cf种语言META.jar META-INF / *
在这里,我们对将依赖项添加到Netbeans的有限知识感到很奇怪
1.打开“项目”选项卡。
2.右键单击依赖项。
3.选择添加依赖项。
4.将groupId设置为:language(可以是任意值)
5.将artifactId设置为:en(可以是任意值)
6.将版本设置为:4.7(可以是任意值)
7.单击添加继续。
依赖关系已添加到pom.xml中,并显示在Maven项目的“库”节点下。继续:
1.展开依赖关系。
2.右键单击库(例如group.id)。
3.选择手动安装工件。
4.将Artifact设置为使用Java Archive(.jar)文件路径进行安装。
5.单击本地安装。
此过程确实将AmericanEnglish.class放在JAR中,并且由Netbeans找到了。
导入org.languagetool.JLanguageTool;
导入org.languagetool.language.AmericanEnglish;
导入org.languagetool.rules.RuleMatch;
这是当我们尝试用AmericanEnglish填充JLanguageTool时的错误
错误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)
我们在清理和构建项目时也会看到这些警告
languagetool:LIBS:jar:4.7的POM丢失,没有相关性信息
languagetool:ORG:jar:4.7的POM丢失,没有相关性信息
languagetool:META:jar:4.7的POM丢失,没有相关性信息
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()方法
必要的JAR文件位于Dependencies文件夹中
项目导入了这些文件
答案 0 :(得分:1)
您需要使用实际的JAR和您认为有点奇怪的过程
不是添加JAR文件的正确方法。提取的ZIP文件夹包含所有黄金,或者我们应该说成JAR的。以下是一些屏幕截图和说明。也就是说,我们仍然会收到NoClassDefFoundError,因此我们将致力于解决问题的那一部分
删除三个JAR,您添加了LIBS-4.7.jar META-4.7.jar和ORG-4.7.jar
我们还建议打开.m2文件夹,然后在/ repository / org / languagetool下删除languagetool文件夹。不用担心一切都会被重新创建。
右键单击Dependencies文件夹,然后选择Add Dependency
在查询文本字段中输入“ org.languagetool”
这是一条评论,我们没有找到languagetool 4.7 JAR作为中央唯一的本地语言? ?
您可能想尝试使用中央4.6 JAR的
展开org.languagetool:languagetool-core文件夹,然后选择4.7.jar
将JAR放入Dependency文件夹后,右键单击广告,然后选择复制位置
现在,再次右键单击相同的JAR,然后选择“手动安装Artifact”
在“要安装的工件”文本框中,使用Ctrl + V粘贴
这将带您到JAR的位置,选择它并保存添加了神器的魔法
请注意,由于创建了这个JAR文件,其语言为en-4.7,因为在所有下载的文件中都找不到AmericanEnglish.class。请参阅上一个屏幕截图
以下是按上述方向排列的屏幕截图
我不屏息,最好使用下载的4.7 JAR,s
您可以尝试接触Maven和语言工具,并询问为什么LT 4.7不在存储库中!
祝你好运