在Windows 64位上运行Grobid

在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

我正在尝试在64位Windows上执行


没有适用于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位本机库

但您可以在64位Windows上安装32位JVM,并运行使用32位本机库的Java应用程序

更新:

这是应用程序启动器的摘录

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二进制文件。在问题中添加了错误。