weblogic部署war包遇到的问题

本文针对WebLogic 10.3.6环境下部署SpringMVC应用时出现的多个常见错误进行了详细的分析与解决,包括ClassNotFoundException、NoSuchMethodError等问题,并提供了具体的配置调整与依赖替换方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近接手项目需要用到weblogic 10.3.6 ,于是学习了一下。整理遇到的几个问题,该war包在tomcat中完美运行,但在weblogic的错误层出不穷:
项目使用maven架构的spring mvc、hibernate、spring。
1、程序启动的时候报 java.lang.ClassNotFoundException: org.apache.juli.logging.LogFactory
在程序包lib中加入:juli-6.0.35.jar
2、Caused by: java.lang.NoSuchMethodError: javax.persistence.OneToMany.orphanRemoval()Z
这是weblogic的jar包和程序内部jar包冲突问题。
网上有人说:把hibernate-jpa-2.0-api-1.0.0.Final.jar放到D:\Program Files\weblogic\jdk160_05\jre\lib\ext (但我这里不行)
将 下的删除,下载javax.persistence.jar 替换成目录下的。
3、Hibernate3中hibernate.query.factory_class的默认值为org.hibernate.hql.ast.ASTQueryTranslatorFactory,
在WebLogic下系统运行时会抛出org.hibernate.QueryException: ClassNotFoundException: org.hibernate.hql.ast.HqlToken异常。
这个问题网上说的很多,解决方法也各式各样,其实很简单,Weblogic系统默认加载EJB-QL parser,
存在重名类,所以使用时会出现ClassNotFoundException。
解决办法1:在WEB-INF目录下建一个weblogic.xml文件,文件中写入如下代码:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE weblogic-web-app PUBLIC "-//BEA Systems, Inc.//DTD Web Application 8.1//EN" "http://www.bea.com/servers/wls810/dtd/weblogic810-web-jar.dtd">
<weblogic-web-app>
<container-descriptor>
<prefer-web-inf-classes>true</prefer-web-inf-classes>
</container-descriptor>
</weblogic-web-app>
说明:prefer-web-inf-classes=true是WebLogic's classloader在有重名类时,优先加载Web应用中WEB-INF内的类。
但此方法会导致Error processing remote invocation: java.lang.LinkageError: loader constraint violation: loader (instance of weblogic/utils/classloaders/Change
AwareClassLoader) previously initiated loading for a different type with name "javax/xml/namespace/QName" 不建议使用。
解决办法2:
第一步: 修改启动脚本 D:/oracle/Middleware/user_projects/domains/base_domain/bin/startWebLogic.cmd
找到set CLASSPATH=%SAVE_CLASSPATH%,在后面加入

set PRE_CLASSPATH=%WL_HOME%/server/lib/antlr-2.7.6.jar;
set CLASSPATH=%PRE_CLASSPATH%;%CLASSPATH%
第二步:antlr-2.7.6.jar包 需要拷贝到D:/oracle/Middleware/wlserver_10.3/server/lib下。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值