无法加载代理工厂工厂异常
Posted
技术标签:
【中文标题】无法加载代理工厂工厂异常【英文标题】:Unable to load proxy factory factory exception 【发布时间】:2011-09-01 15:45:31 【问题描述】:我在运行我的 Nhibernate 项目时遇到了这个烦人的错误。它运行正常,突然间它开始在此路径“d:\CSharp\NH\NH\nhibernate\src\NHibernate\Bytecode\AbstractBytecodeProvider.cs”中请求一个文件,当取消时,它抛出一个异常说它说 在代理工厂类的配置过程中,无法加载类型“NHibernate.ByteCode.Castle.ProxyFactoryFactory,NHibernate.ByteCode.Castle”。 可能的原因有: - 未部署 NHibernate.Bytecode 提供程序程序集。 - 用于初始化 session-factory 部分的 'proxyfactory.factory_class' 属性的 typeName 格式不正确。
解决方案: 确认您的部署文件夹包含以下程序集之一: NHibernate.ByteCode.LinFu.dll NHibernate.ByteCode.Castle.dll
这让我很沮丧...需要帮助 -:)
【问题讨论】:
【参考方案1】:确保您的进程已将以下 dll 复制到输出文件夹和 loaded:
NHibernate.ByteCode.Castle.dll Castle.Core.dll NHibernate.dll Iesi.Collections.dll log4net.dll你的 NHibernate 配置有这一行:
<property name="proxyfactory.factory_class">
NHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle
</property>
作为一个选项,您可以尝试升级到最新版本的 NHibernate - 3.2。他们有一个内置的代理生成器,所以对你来说应该更简单。您将不需要这些额外的 dll。如果您使用 NHibernate 3.2,只需删除上面的配置行。
如果由于某些原因您无法升级到 3.2,您可以考虑使用不同的byte code providers。 NHibernate 开箱即用地支持其中的 3 个。试试 LinFu 或 Spring:
【讨论】:
【参考方案2】:升级到最新版本,您将不再需要外部代理工厂。
【讨论】:
以上是关于无法加载代理工厂工厂异常的主要内容,如果未能解决你的问题,请参考以下文章
#yyds干货盘点# mybatis源码解读:executor包(懒加载功能)
Laravel PHPUnit 测试运行产生异常 调度器创建后无法设置默认工厂
NHibernate 2.1 代理工厂选项 - 有啥区别以及选择哪个?
无法从 Data Fusion 连接 Cloud SQL mySql 实例。异常“无法创建套接字工厂 'com.google.cloud.sql.mysql.SocketFactory”