javonet - 尝试迭代类型时发生反射类型加载异常
问题描述
我的 .Net 应用程序引用了一些 nuget 包。当我尝试使用 JavaNet 在 java/scala 中使用 .Net DLL 时。请让我知道如何解决此错误。谢谢
我得到以下“消息:无法加载一个或多个请求的类型。检索 LoaderExceptions 属性以获取更多信息。堆栈跟踪:在 System.Reflection.RuntimeModule.GetTypes(RuntimeModule module) at System.Reflection.Assembly.GetTypes( ) 在 SicsClrController.Engine.ClrEngine.FindTypeInAssembly(Assembly assembly, String className, List`1 genericTypes)。加载程序异常: -------------------------加载程序异常 #0
消息:无法加载文件或程序集“System.Memory,Version=4.0.1.0,Culture=neutral,PublicKeyToken=cc7b13ffcd2ddd51”或其依赖项之一。该系统找不到指定的文件。完整打印:System.IO.FileNotFoundException:无法加载文件或程序集“System.Memory,Version=4.0.1.0,Culture=neutral,PublicKeyToken=cc7b13ffcd2ddd51”或其依赖项之一。该系统找不到指定的文件。文件名:'System.Memory,版本=4.0.1.0,Culture=neutral,PublicKeyToken=cc7b13ffcd2ddd51'"
解决方案
您遇到问题的库是 System.Memory,它是一个框架库。
因此,可能有多种原因:
- 确保它在 .NET 本身中工作,有时 Nuget 包引用框架库的具体版本,这可能与其他 nuget 包冲突,即使没有 Javonet,也会导致类似问题
- 如果它在纯 .NET 中工作,那么某些库动态加载 System.Memory 可能会出现问题,在这种情况下,Javonet 有时可能无法识别正确的版本。解决方案是使用在 .NET 中注入事件 AssemblyLoad 并提供基于具体 System.Memory 实现的库名称的完整路径的小助手。
您可以使用来自 Javonet 的助手:http: //download.javonet.com/support/AssemblyResolverLibV2.zip
Javonet.addReference("AssemblyResolverLib.dll");
//Register custom sections DLLs (if you have more than one call this line for each DLL)
Javonet.New("AssemblyResolver","log4net","c:\\samplepath\\log4net.dll");
推荐阅读
- automata - 证明语言不是上下文无关的?
- c# - UWP VpnManagementAgent 凭据问题
- c# - Visual Studio 2013 Reference Hell - 它一直在寻找任何不存在的旧版本的 DLL - 为什么?
- javascript - Sequelize - 在 PostgreSQL 数组查询中不包含字符串
- excel - 当输入范围是字符串时,为什么我的组合框宏不起作用?
- python - 这个 python 代码的大 O 复杂度是多少?
- jquery - 第一封电子邮件后无法向 forumspree.io 提交表单
- html - 如何在图像顶部添加 h1,在中间添加段落并使图像变暗?
- opencl - OpenCL:来自不同程序的内核并行执行
- google-cloud-platform - GCP Cloudsql“按需”备份是增量的还是完整的?