微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

带有 .Net Core 3.1 / .Net 5 的 TikaOnDotNet 失败,方法未找到:'Void System.IO.FileStream..ctor

如何解决带有 .Net Core 3.1 / .Net 5 的 TikaOnDotNet 失败,方法未找到:'Void System.IO.FileStream..ctor

在 .Net Core 3.1 和 .Net 5 中,我尝试引用 TikaOnDotNet nugget 包。

示例代码如下。

using System;
using System.IO;
using TikaOnDotNet.TextExtraction;

    namespace tika
    {
        class Program
        {
            static void Main(string[] args)
            {
    
                var textExtractor = new TextExtractor();
    
                var original = new FileInfo(Path.Combine(Directory.GetCurrentDirectory(),@"pptexamples.ppt"));
    
                var wordDocContents = textExtractor.Extract(original.FullName);
    
            }
        }
    }

在 textExtractor.Extract 方法中,它抛出以下异常。

TikaOnDotNet.TextExtraction.TextExtractionException: "Extraction of text from the file '/Users/serhatonal/Projects/tika/tika/bin/Debug/netcoreapp3.1/pptexamples.ppt' Failed." ---> TikaOnDotNet.TextExtraction.TextExtractionException: "Extraction Failed." ---> System.MissingMethodException: "Method not found: 'Void System.IO.FileStream..ctor(System.String,System.IO.FileMode,System.Security.AccessControl.FileSystemRights,System.IO.FileShare,Int32,System.IO.FileOptions)'."
  at at Java_java_io_FileDescriptor.open(String name,FileMode fileMode,FileAccess fileAccess)\n   at java.io.FileDescriptor.open(String,FileMode,FileAccess )\n   at java.io.FileDescriptor.open(String,Int32 )\n   at java.io.FileDescriptor.openReadOnly(String )\n   at Java_java_io_RandomAccessFile.open0(Object _this,String name,Int32 mode,FileDescriptor fd,Int32 O_RDWR)\n   at java.io.RandomAccessFile.open0(String,Int32 )\n   at java.io.RandomAccessFile.open(String,Int32 )\n   at java.io.RandomAccessFile..ctor(File file,String mode)\n   at java.util.zip.ZipFile..ctor(File file,Charset charset)\n   at java.util.zip.ZipFile..ctor(File file,Int32 mode)\n   at java.util.jar.JarFile..ctor(File file,Boolean verify,Int32 mode)\n   at java.util.jar.JarFile..ctor(String name)\n   at IKVM.NativeCode.ikvm.runtime.AssemblyClassLoader.lazyDefinePackages(ClassLoader _this)\n   at ikvm.runtime.AssemblyClassLoader.lazyDefinePackages()\n   at ikvm.runtime.AssemblyClassLoader.lazyDefinePackagesCheck()\n   at ikvm.runtime.AssemblyClassLoader.getPackage(String name)\n   at java.lang.Package.getPackage(Class )\n   at java.lang.class.getPackage()\n   at org.apache.tika.mime.MimeTypesFactory.create(String coreFilePath,String extensionFilePath,ClassLoader classLoader)\n   at org.apache.tika.mime.MimeTypes.getDefaultMimeTypes(ClassLoader classLoader)\n   at org.apache.tika.config.TikaConfig.getDefaultMimeTypes(ClassLoader )\n   at org.apache.tika.config.TikaConfig..ctor()\n   at org.apache.tika.config.TikaConfig.getDefaultConfig()\n   at org.apache.tika.parser.AutoDetectParser..ctor()\n   at TikaOnDotNet.TextExtraction.Stream.StreamTextExtractor.Extract(Func`2 streamFactory,Stream outputStream)
  --- End of inner exception stack trace ---
  at at TikaOnDotNet.TextExtraction.Stream.StreamTextExtractor.Extract(Func`2 streamFactory,Stream outputStream)\n   at TikaOnDotNet.TextExtraction.TextExtractor.Extract[TExtractionResult](Func`2 streamFactory,Func`3 extractionResultAssembler)\n   at TikaOnDotNet.TextExtraction.TextExtractor.Extract[TExtractionResult](String filePath,Func`3 extractionResultAssembler)
  --- End of inner exception stack trace ---
  at TikaOnDotNet.TextExtraction.TextExtractor.Extract[TExtractionResult](String filePath,Func`3 extractionResultAssembler)\n   at TikaOnDotNet.TextExtraction.TextExtractor.Extract(String filePath)\n   at tika.Program.Main(String[] args) in /Users/serhatonal/Projects/tika/tika/Program.cs:16

即使我发现了这个问题 "System.MissingMethodException: "Method not found: 'Void System.IO.FileStream..ctor(System.String,System.Security.AccessControl. FileSystemRights,System.IO.FileOptions)'."" 被认为已修复,.Net 5 版本的以下问题仍然存在。

https://github.com/dotnet/runtime/issues/30435

有人和我有同样的问题吗?

解决方法

IMVM 库的基础,因为这是一个java端口,不是dotnet 核心兼容。

https://github.com/KevM/tikaondotnet/issues/136#issuecomment-583695410

不幸的是,这就是原因。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。