解决问题(一)——Exception

本文解决了一个在启动Server过程中出现的CGLIB签名信息不匹配问题,通过调整Spring与Hibernate依赖包实现问题解决。

 今天主要遇到的问题是启动Server之后就会出现以下错误:

2007-10-25 10:20:05,562 ERROR [BasicLazyInitializer] CGLIB Enhancement failed: com.fullproject.vo.User
net.sf.cglib.core.CodeGenerationException: java.lang.reflect.InvocationTargetException-->null

2007-10-25 10:20:05,578 WARN  [PojoEntityTuplizer] could not create proxy factory for:com.fullproject.vo.User
org.hibernate.HibernateException: CGLIB Enhancement failed: com.fullproject.vo.User
Caused by: net.sf.cglib.core.CodeGenerationException: java.lang.reflect.InvocationTargetException-->null
Caused by: java.lang.reflect.InvocationTargetException
Caused by: java.lang.SecurityException: class "com.fullproject.vo.User$$EnhancerByCGLIB$$feaea099"'s signer information does not match signer information of other classes in the same package

主要原因是用MyEclipse搭建工程时,会导入Spring和Hibernate各所需要的包,其中:

Spring的AOP编程时,会用到这几个lib:
asm-2.2.3.jar
asm-commons-2.2.3.jar
asm-util-2.2.3.jar
cglib-nodep-2.1_3.jar

Hibernate也包含类似的包lib:
asm.jar
asm-attrs.jar
cglib-2.1.3.jar
而导致的包冲突。

在网上查得的资料是说把以上Hibernate的包删掉,但是在我的环境中并不起效。相反我删掉的是以上Spring所用的包,但不是全部只有asm-2.2.3.jar和cglib-nodep-2.1_3.jar。问题解决。

参考网址:http://hi.baidu.com/hateeyes/blog/item/741acbd47cb43403a08bb771.html


 

### 关于表达式问题的求解方法 在程序设计领域,表达式的解析和求值是个常见的需求。无论是Python、C语言还是其他编程语言,都提供了多种方式来处理不同类型的表达式。 #### 1. **加法表达式的解决** 对于简单的加法表达式,在Python中可以通过直接使用`+`操作符完成计算。例如: ```python result = 2 + 3 print(result) # 输出结果为5 ``` 此方法适用于基本数值间的相加操作[^1]。 #### 2. **函数调用表达式的解决** 当涉及更复杂的数学运算时,可以借助内置库或自定义函数实现功能扩展。比如利用`math`模块计算平方根: ```python import math result = math.sqrt(4) print(result) # 输出结果为2.0 ``` 这种方式不仅限于标准库,还可以应用于第三方库或其他复杂场景下的函数调用。 #### 3. **比较表达式的解决方案** 比较表达式用于评估两个值之间是否存在特定关系(如大小比较)。其通用形式如下所示: ```python num1 = 5 num2 = 3 result = num1 > num2 print(result) # 输出True ``` 此类表达式的结果通常为布尔型数据类型(True/False)[^1]。 #### 4. **逻辑表达式的构建与应用** 为了应对多重条件筛选的情况,可采用逻辑运算符(`and`, `or`, `not`)组合多个简单条件形成复合条件语句。下面的例子展示了如何判断某个整数是否位于指定区间内: ```python num = 7 result = (num > 0) and (num < 10) print(result) # 如果num=7,则输出True ``` 这里的逻辑结构允许开发者灵活控制程序流程。 #### 5. **前缀表达式的求值算法** 针对特殊格式的算术表达式——如前缀表达式,可通过栈(Stack)抽象数据类型高效地执行求值过程。具体步骤包括但不限于逆向遍历输入字符串、依据符号性质决定压入或弹出动作等。以下是基于前述理论的个实例化版本: 给定前缀表达式 `- + 1 * + 2 3 4 5` ,按照既定规则逐步演算直至获得最终答案(-16): 1. 初始化个空栈; 2. 自右向左读取字符序列中的每个元素; - 若当前项属于数字范畴,则将其推入栈底; - 假设碰到了二元运算符,则连续两次取出最近存入的数据成员参与相应运算,并把所得中间成果重新置回顶部位置等待后续可能的操作; 3. 循环结束后剩余唯对象即为目标响应值[^3]。 ```python def evaluate_prefix(expression): stack = [] operators = set(['+', '-', '*', '/']) tokens = expression.split()[::-1] for token in tokens: if token not in operators: try: stack.append(int(token)) except ValueError: raise Exception(f"Invalid operand {token}") else: if len(stack) < 2: raise Exception("Insufficient operands") op1 = stack.pop() op2 = stack.pop() if token == '+': result = op1 + op2 elif token == '-': result = op1 - op2 elif token == '*': result = op1 * op2 elif token == '/': if op2 == 0: raise ZeroDivisionError("Cannot divide by zero") result = int(op1 / op2) stack.append(result) if len(stack) != 1: raise Exception("Malformed expression or too many operands") return stack[0] expression = "- + 1 * + 2 3 4 5" print(evaluate_prefix(expression)) # 输出-16 ``` #### 6. **SQL查询优化之GROUP BY相关调整** 切换数据库引擎期间可能会遭遇某些特性不致引发的新挑战。例如从MySQL迁移到达梦数据库过程中,“不是 GROUP BY 表达式”的报错提示表明原SQL脚本未能完全适配目标环境的要求。对此有两种主流对策可供选择:是更改DM.INI文件里的COMPATIBLE_MODE参数设定以增强兼容度;二是保留原有架构不变的前提下适当修饰现有指令集,像添加注释标记/+ GROUP_OPT_FLAG(1)/就能有效缓解这类冲突现象的发生概率[^2]。 --- ###
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码匠君

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值