同事解决的,摘抄上来备用。

问题描述:在OAF里调用ESB的服务报错如下:

Error Page  
Exception Details.  
 oracle.apps.fnd.framework.OAException: oracle.jbo.JboException: JBO-29000: Unexpected exception caught: java.lang.IllegalAccessError, msg=tried to access class org.apache.commons.logging.LogFactory$1 from class org.apache.commons.logging.LogFactory
at oracle.apps.fnd.framework.OAException.wrapperException(OAException.java:912)
at oracle.apps.fnd.framework.OAException.wrapperException(OAException.java:888)
at _OAErrorPage._jspService(_OAErrorPage.java:221)
at com.orionserver.http.OrionHttpJspPage.service(OrionHttpJspPage.java:59)
 
分析:由于ESB API里需要引入很多jar包,其中包括:commons-logging.jar,事实上EBS之前在其它地方就存在了这个jar包。
 
在运行程序时追踪它到底使用的是哪个目录下的jar包:
方法1:
String  myclassPath =  URLDecoder.decode(org.apache.commons.logging.LogFactory.class.getProtectionDomain().getCodeSource().getLocation().getFile(),  "UTF-8");
方法2:
 
String className =  org.apache.commons.logging.LogFactory.class.getName().replace('.', '/');
String resource = "/" + className + ".class";
URL url = org.apache.commons.logging.LogFactory.class.getResource(resource);
System.out.println("路径:" + url.getFile());
 
通过查看发现系统调用的$IAS_ORACLE_HOME/ webservices/lib/commons-logging.jar。没有调用我们上传的$JAVA_TOP下的commons-logging.jar.
 
解决办法:
将$IAS_ORACLE_HOME/ webservices/lib/commons-logging.jar改名commons-logging.jar.old(如果目录下没有这个jar包,系统会去加载$JAVA_TOP下的)
将commons-logging.jar复制到$JAVA_TOP(用系统原来的这个包替换我们自己的)
 
这时运行可能会报以下错误:
oracle.apps.fnd.framework.OAException: oracle.jbo.JboException: JBO-29000: Unexpected exception caught: oracle.classloader.util.AnnotatedNoClassDefFoundError, msg=

Missing class: org.apache.commons.logging.Log

Dependent class: oracle.webdb.wsrp.server.CommonsLogAdapter
        Loader: oracle.wsrp:1.0
   .....
   .....
为了防止以上错误需要将本次ESB相关的其它JAR配置到$ORA_CONFIG_HOME/10.1.3/j2ee/oacore/config/server.xml
如:

删除:

<code-source path="/oracle/ebsapp/appldev3/DEV3/apps/tech_st/10.1.3/webservices/lib/commons-logging.jar"/>

添加:

code-source path="/oracle/ebsapp/appldev3/DEV3/apps/apps_st/comn/java/classes/commons-logging.jar"/>

<code-source path="/oracle/ebsapp/appldev3/DEV3/apps/apps_st/comn/java/classes/com.ibm.mq.headers.jar"/>

<code-source path="/oracle/ebsapp/appldev3/DEV3/apps/apps_st/comn/java/classes/com.ibm.mq.jar"/>

即把esb相关jar包都加上。

注意:为了防止AutoConfig后所添加的会丢失,需在模板中将之信息添加到 FND_TOP/admin/template/ FND_TOP/admin/template/ server_xml_1013.tmp

如:

删除行:

<code-source path="%s_weboh_oh%/webservices/lib/commons-logging.jar"/>

添加行:

<code-source path="%s_javatop%/commons-logging.jar"/>

<code-source path="%s_javatop%/com.ibm.mq.commonservices.jar"/>

<code-source path="%s_javatop%/com.ibm.mq.headers.jar"/>

<code-source path="%s_javatop%/com.ibm.mq.jar"/>

.........

........

重启后可正常使用。

解决EBS中JAR包冲突的问题的更多相关文章

  1. 共享库方案解决WAS中JAR包冲突

    实现步骤: 1.        准备共享库JAR包 commons-httpclient-3.1.jar httpclient-4.3.3.jar httpcore-4.3.2.jar httpmim ...

  2. 【Maven】【IDEA】在idea中开发web项目,解决maven的jar包冲突的方法

    在idea中开发web项目,解决maven的jar包冲突的方法 第一步: 先对项目进行 clean ,再进行install 第二步: 出现NoSuchMethodException,ClassNotF ...

  3. Maven中 jar包冲突原理与解决办法

    Maven中jar包冲突是开发过程中比较常见而又令人头疼的问题,我们需要知道 jar包冲突的原理,才能更好的去解决jar包冲突的问题.本文将从jar包冲突的原理和解决两个方面阐述Maven中jar包冲 ...

  4. 解决Maven依赖jar包冲突总结

    maven导入jar包中的一些概念:      直接依赖:项目中直接导入的jar包,就是该项目的直接依赖包.      传递依赖:项目中没有直接导入的jar包,可以通过项目直接依赖jar包传递到项目中 ...

  5. 解决Maven的jar包冲突问题

    1. 问题描述 控制台说:无法将 com.zpx.servlet.MyServlet 识别为 javax.servlet.Servlet 2. 问题原因 Maven的一个核心功能就是一键构建,所以Ma ...

  6. Maven中jar包冲突的解决方式

    现象 创建一个maven工程,引入spring-context包. <dependency> <groupId>org.springframework</groupId& ...

  7. Maven中Jar包冲突,不让某个Jar包打入到工程中

     查看工程目前冲突的Jar包,这里以fastjson.jar为例: 打开工程的pom.xml,进入到Dependency Hierarchy页面搜寻目标Jar. 从这里我们可以看到目前工程中有2处导入 ...

  8. 【BUG】websphere找不到类或jar包冲突

    来自:http://liuwei1578.blog.163.com/blog/static/49580364200991572642653/ Jar包冲突问题是在大型Java软件开发中经常遇到的问题, ...

  9. 【maven】排除maven中jar包依赖的解决过程 例子:spring cloud启动zipkin,报错maven依赖jar包冲突 Class path contains multiple SLF4J bindings.

    一直对于maven中解决jar包依赖问题的解决方法纠结不清: 下面这个例子可以说明一个很简单的解决方法: 项目启动报错: Connected to the target VM, address: '1 ...

随机推荐

  1. Apache:如何访问共享目录

    环境说明:Apache的版本是2.4.10,共享目录有两种情况,一种是windows server的目录共享,还有一种是linux的NAS.无论访问哪一种共享目录,都需要用户名和密码. 问题说明:如何 ...

  2. JS--遍历对象

    var person = { Name:"Frank", Age:23 } Object.keys(person).forEach(function(key){ console.l ...

  3. IO流中将字节流转成字符流的方法

    //字节流--->字符流 1. public class TestIO { public static void main(String[] args) throws IOException { ...

  4. 记一次从邻居无线路由渗透到邻居PC

    起因:因为房东的网太垃圾 决定自己动手丰衣足食蹭邻居的网 结果发现一个信号超好的无线路由0x01踩点 无意中发现TP-LINK_28C0这个无线信号特别的好 看起来就肯定知道是隔壁邻居的 抓了一下包 ...

  5. BZOJ3160万径人踪灭

    Description Input & Output & Sample Input & Sample Output HINT 题解: 题意即求不连续但间隔长度对称的回文串个数. ...

  6. Mysql完全手册(笔记二,使用数据与性能优化)

    一.使用数据 1.使用变量 MySQL也可以让我们以用户自定义的变量来存储select查询的结果,以便在将来select查询中使用.它们只会在客户会话期间存在,但是它们提供一个方便有效的方法来连接查询 ...

  7. Codevs堆练习

    Codevs堆练习 黄金:2830.2879.2995.3110 钻石:1052.1063.1245.1246.2057.2573.3377 大师:1021.1765.2069.2913.3032

  8. [LeetCode] Frog Jump 青蛙过河

    A frog is crossing a river. The river is divided into x units and at each unit there may or may not ...

  9. 马虎将classname加到了id属性中,造成报错

    今天做了一个瀑布流布局的小例子,自己在写代码的过程中一直报cannot read property 'style' of null,百度之后说是页面还没有加载完,但是我看了代码是写在window.on ...

  10. <Script>放置位置

    html文件是自上而下的执行方式 css引入执行加载时,程序仍然往下执行 script脚本是则中断线程,待该script脚本执行结束之后程序才继续往下执行 页面效果实现类的js放在body之前,动作, ...