在Windows 64位上运行Grobid
我正在尝试在64位Windows上执行在Windows 64位上运行Grobid,windows,jvm,32bit-64bit,grobid,Windows,Jvm,32bit 64bit,Grobid,我正在尝试在64位Windows上执行 没有适用于Windows的x64位版本的库(至少我找不到)。它在64位Linux和32位JRE上运行。因此,JRE的版本不是问题所在 我知道我需要包含64位Windows-libcrfpp文件。但是我找不到它。你能告诉我在哪里可以找到它或者帮我执行它吗 然而,我得到一个错误如下- 尝试在Windows 64上使用64位JVM运行时出错- Exception in thread "main" java.lang.ExceptionInInitializerE
没有适用于Windows的x64位版本的库(至少我找不到)。它在64位Linux和32位JRE上运行。因此,JRE的版本不是问题所在 我知道我需要包含64位Windows-libcrfpp文件。但是我找不到它。你能告诉我在哪里可以找到它或者帮我执行它吗 然而,我得到一个错误如下- 尝试在Windows 64上使用64位JVM运行时出错-
Exception in thread "main" java.lang.ExceptionInInitializerError
at org.grobid.core.main.GrobidParser.<clinit>(GrobidParser.java:22)
at org.pushpin.main.Main.main(Main.java:138)
Caused by: java.lang.RuntimeException: Unable to find a native CRF++ library: Folder <FOLDER>\GROBID_HOME\.\lib\win-64 does not exist
at org.grobid.core.main.LibraryLoader.load(LibraryLoader.java:21)
at org.grobid.core.impl.GrobidFactoryImpl.init(GrobidFactoryImpl.java:35)
at org.grobid.core.impl.GrobidFactoryImpl.newInstance(GrobidFactoryImpl.java:22)
at org.grobid.core.impl.GrobidFactoryImpl.instance(GrobidFactoryImpl.java:14)
at org.grobid.core.GrobidFactory.<clinit>(GrobidFactory.java:13)
... 2 more
线程“main”java.lang.ExceptionInInitializeError中的异常
位于org.grobid.core.main.GrobidParser(GrobidParser.java:22)
位于org.pushpin.main.main.main(main.java:138)
原因:java.lang.RuntimeException:找不到本机CRF++库:文件夹\GROBID\u HOME\。\lib\win-64不存在
位于org.grobid.core.main.LibraryLoader.load(LibraryLoader.java:21)
位于org.grobid.core.impl.GrobidFactoryImpl.init(GrobidFactoryImpl.java:35)
位于org.grobid.core.impl.GrobidFactoryImpl.newInstance(GrobidFactoryImpl.java:22)
位于org.grobid.core.impl.GrobidFactoryImpl.instance(GrobidFactoryImpl.java:14)
位于org.grobid.core.GrobidFactory(GrobidFactory.java:13)
... 还有两个
更新
尝试在Windows 64上使用32位JVM运行时出错-
Caused by: java.io.IOException: Cannot run program "<project path i have removed it>\lib/pdftoxml": CreateProcess error=193, %1 is not a valid Win32 application
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)
at java.lang.Runtime.exec(Runtime.java:615)
at java.lang.Runtime.exec(Runtime.java:448)
at java.lang.Runtime.exec(Runtime.java:345)
at org.grobid.core.document.Document.pdf2xml(Document.java:217)
at org.grobid.core.engines.HeaderParser.processing(HeaderParser.java:86)
原因:java.io.IOException:无法运行程序“\lib/pdftoxml”:CreateProcess错误=193,%1不是有效的Win32应用程序
位于java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)
位于java.lang.Runtime.exec(Runtime.java:615)
位于java.lang.Runtime.exec(Runtime.java:448)
位于java.lang.Runtime.exec(Runtime.java:345)
位于org.grobid.core.document.document.pdf2xml(document.java:217)
位于org.grobid.core.engines.HeaderParser.processing(HeaderParser.java:86)
无法从64位JVM加载32位本机库
private static String getLibraryFolder() {
String osPart = System.getProperty("os.name").replace(" ", "").toLowerCase().substring(0, 3);
String archPart = System.getProperty("sun.arch.data.model");
//todo: change to fetching the basic dir from GrobidProperties object
return String.format("%s/%s-%s", GrobidProperties.getInstance().getNativeLibraryPath().getAbsolutePath(),
osPart, archPart);
}
应用程序正在检查属性sun.arch.data.model
,以获取本机库文件夹。如果您在64位Windows中使用32位JVM,您将获得
java.home=C:\Program Files (x86)\Java\jre7
os.arch=x86
os.name=Windows 7
sun.arch.data.model=32
因此,使用32位JRE执行应用程序将从\GROBID\u HOME\.\lib\win-32
更新:
使用32位JRE时出现的错误与JVM体系结构无关。你应该正确安装和配置你的
pdf2xml
。我在这里写这篇文章只是想告诉你,我们已经集成了Wapiti for Windows 64位的移植版本
如果您仍然有兴趣尝试,您可以从下载/更新Grobid开发版本
pdf2xml的问题以及Windows测试时出现的其他小错误已经解决。
批处理和服务模式都很好。如果能够在本机运行的不同Windows版本上进行更密集的测试,那就太好了
您可以跟踪进度并在上报告最终的问题或bug。可能:它显示文件夹\GROBID\u HOME\。\lib\win-64不存在。这与文件夹无关。libcpp文件必须位于该文件夹中。但是它不可用。您可以从源代码生成x64版本的库,也可以使用32位JRE。没有适用于Windows的x64位版本的库(至少我找不到)。它在64位Linux和32位Windows上运行。因此,即使是32位JRE也无济于事。您更新的错误与此非常不同,您可能需要开始一个新的问题(antispam的答案似乎完美地回答了您的第一个问题)。不管怎样,您是否可能下载了unix版本?它显然试图运行“lib/pdftoxml”。windows二进制文件的结尾总是有.exe或.com。签入您提到的文件夹。如果同时找到“pdftoxml”和“pdftoxml.exe”,请删除不带扩展名的一个,并查看它是否解决了您的问题。没有适用于Windows的x64位版本的库(至少我找不到)。它在64位Linux和32位Windows上运行。因此,即使是32位JRE也不会有帮助,32位JVM也会有帮助。当我需要在64位Windows中运行具有32位本机依赖项的Java应用程序时,我检查了自己。试试看,我确实试过了。它需要一个libcrfpp文件才能运行。这仅适用于具有64位JVM的64位Linux和具有32位JVM的32位Windows。在使用32位JVM启动应用程序时,是否可以发布错误消息?在内部,它尝试运行不运行的pdftoxml二进制文件。在问题中添加了错误。