下面以eclipse-birt(报表)为例,介绍这种问题出现的原因以及解决之道:

分析比较好的见:http://developer.actuate.com/community/forum/index.php?/topic/9315-exception-javalangnosuchmethoderror/

  1>现象:

I could run report as stand alone, but while I am trying to use report engine in weblogicI am getting following error.
java.lang.NoSuchMethodError: org.mozilla.javascript.ImporterTopLevel.initStandardObjects(Lorg/mozilla/javascript/Context;Z)V

root cause:

java.lang.NoSuchMethodError: org.mozilla.javascript.ImporterTopLevel.initStandardObjects(Lorg/mozilla/javascript/Context;Z)V
org.eclipse.birt.core.script.ScriptContext.(ScriptContext.java:80)
org.eclipse.birt.core.script.ScriptContext.(ScriptContext.java:67)
org.eclipse.birt.report.engine.executor.ExecutionContext.(ExecutionContext.java:295)
org.eclipse.birt.report.engine.api.impl.EngineTask.(EngineTask.java:137)
org.eclipse.birt.report.engine.api.impl.RunAndRenderTask.(RunAndRenderTask.java:62)
org.eclipse.birt.report.engine.api.impl.ReportEngineHelper.createRunAndRenderTask(ReportEngineHelper.java:292)
org.eclipse.birt.report.engine.api.impl.ReportEngine.createRunAndRenderTask(ReportEngine.java:299)
com.teamcenter.project.birt.servlet.WebReport.doGet(WebReport.java:90)
javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
com.teamcenter.project.servlet.LoginTimerFilter.doFilter(LoginTimerFilter.java:74)
com.teamcenter.project.servlet.UTF8EncodingFilter.doFilter(UTF8EncodingFilter.java:50)

  2>原因:

The problem is because the application server contains a older version of
Rhino's js.jar, while BIRT uses the latest version (1.6RC1). Because the js.jar
in the application server is loaded before the one in BIRT, the older version
of class org.mozilla.javascript.Context is loaded. Since the older version of
class org.mozilla.javascript.Context doesn't contain function
initStandardObjects, a runtime java.lang.NoSuchMethodError happened.

To solve this kind of problem, the application server usually provides a
configuration to allow loading application's java classes before the app
server's. 

  3>解决:

  

the conflict was between Weblogic Application Server and BIRT library, in weblogic-application.xml we have added the following configuration which has resolved the issue.

Configuration:
<prefer-application-packages>
<package-name>org.mozilla.*</package-name>
</prefer-application-packages>

  另外一篇比较好的文章: http://blog.csdn.net/hhb200766/article/details/7818142

    在WEB-INF目录下新建weblogic-application.xml文件

    1. <?xml version="1.0" ?>
    2. <weblogic-application>
    3. <prefer-application-packages>
    4. <package-name>antlr.*</package-name>
    5. </prefer-application-packages>
    6. </weblogic-application>

    在weblogic.xml文件中插入一段配置:

    1. <container-descriptor>
    2. <prefer-web-inf-classes>true</prefer-web-inf-classes>
    3. </container-descriptor>

针对我自己的这个应用,也是参照上面的解决办法的,具体如下:

  config是我自己的一个web应用

  在WEB-INF目录下新建一个 application.xml 和 weblogic-application.xml文件,这两个文件的内容是一模一样的,估计只需要一个,至于哪一个可以再尝试我这里就把两个文件都保留着,这两个文件的内容如下:

<?xml version="1.0"?>
<weblogic-application>
    <prefer-application-packages>
        <package-name>org.mozilla.*</package-name>
    </prefer-application-packages>
</weblogic-application> 

紧接着在 weblogic.xml文件中修改一个配置,设置为true

<?xml version="1.0" encoding="UTF-8"?>

<wls:weblogic-web-app xmlns:wls="http://xmlns.oracle.com/weblogic/weblogic-web-app" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd http://xmlns.oracle.com/weblogic/weblogic-web-app http://xmlns.oracle.com/weblogic/weblogic-web-app/1.4/weblogic-web-app.xsd">
    <wls:context-root>/config</wls:context-root>
    <wls:charset-params>
        <wls:input-charset>
            <wls:resource-path>/*</wls:resource-path>
            <wls:java-charset-name>UTF-8</wls:java-charset-name>
        </wls:input-charset>
    </wls:charset-params>

    <wls:container-descriptor>
            <!-- yangw change false to true -->
        <wls:prefer-web-inf-classes>true</wls:prefer-web-inf-classes>

    </wls:container-descriptor>

</wls:weblogic-web-app>

最后重启应用即可.

weblogic服务器上类或者方法找不到的解决办法的更多相关文章

  1. 关于Andorid的RecyclerView在V7包下找不到的解决办法

      关于Andorid的RecyclerView在V7包下找不到的解决办法 最近在学习使用RecyclerView替换现有的ListView,看了几篇文章.当准备自己动手实现的时候发现,V7包下找不到 ...

  2. Intellij里检出svn报错找不到svn解决办法

    Intellij里检出svn报错找不到,解决办法: 1. 安装svn客户端: 2. 去掉settings->version control->subversion里的use command ...

  3. .Net“/”应用程序中的服务器错误 超过了最大请求长度 错误解决办法

    错误如下: 错误提示: 说明: 执行当前 Web 请求期间,出现未处理的异常.请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息. 异常详细信息: System.Web.HttpE ...

  4. 服务器CPU使用率高的原因分析与解决办法

    我们的服务器在使用操作系统的时候,用着用着系统就变慢了,打开“ 任务管理器 ”一看,才发现CPU使用率达到80%以上.这是怎么回事情呢?遇到病毒了吗?硬件有问题?还是系统设置有问题呢?在本文中将从硬件 ...

  5. Linux下修改环境变量,不小心改错,找不到命令解决办法

    PATH改错了找不到命令 解决方法: 重新定义PATH export PATH=/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/us ...

  6. 阿里云服务器被挖矿程序minerd入侵的终极解决办法[转载]

    突然发现阿里云服务器CPU很高,几乎达到100%,执行 top c 一看,吓一跳,结果如下: root 386m S : /tmp/AnXqV -B -a cryptonight -o stratum ...

  7. 服务器大量TIME_WAIT和CLOSE_WAIT的原因及解决办法

    Linux服务器下查看网络连接的状态 netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}' 它会显示例如下面的信息: ...

  8. pymysql_mysql密码重置方法,连接局域网数据库的解决办法

    https://blog.csdn.net/qq_37176126/article/details/72824106   pymysql模块的操作 https://blog.csdn.net/skh2 ...

  9. IIS6.0添加上.net4.0后,以前的.net系统出现“服务器应用程序不可用”的错误提示解决办法

    把VS2010开发的网站.net4.0部署到Windows Server 2003的服务器上去, Windows Server 2003操作系统自带的为IIS 6.0,IIS 6.0一般只支持.NET ...

随机推荐

  1. 第9天:CSS精灵图

    今天重点学习了CSS精灵图. "CSS精灵",英语css sprite,所以也叫做"CSS雪碧"技术.是一种CSS图像合并技术,该方法是将小图标和背景图像合并到 ...

  2. Python beautifulsoup 选择器 select 选择<meta/>等不需要成对结尾标签未写‘/’

    一些不需要成对的标签<meta/> <img/>d等使用bs4的css选择器时出现的情况: 选择某一标签,输出内容超出范围过多 from bs4 import Beautifu ...

  3. nGrinder 简易使用教程

    背景 性能压测工具之前使用的是jmeter,这次说的是nGrinder,先直接搬运两者之间的比较 比较点 JMeter nGrinder 结果 实现语言 Java Java = License Apa ...

  4. linux各个文件夹的用途

    英文: /bin: where binary programs live. /boot: the special programs that start the system when you tur ...

  5. 80C51学习 蜂鸣器

    /* 蜂鸣器分为有源和无源 其中有源是指有振荡源 ULN2003 达林顿管 输入输出反向放大 */ #include "reg52.h" typedef unsigned int ...

  6. LAMP环境的搭建(三)----PHP7的安装

    centos自带的PHP源是5.4版本的.如果需要安装PHP 5.4 直接输入 yum install php -y 即可 因为PHP7性能巨大的提升,因此本文选择安装PHP7 如果已经安装过了php ...

  7. Java中的方法

    Java方法/函数 方法的定义: Java方法是语句的集合,他们在一起执行一个功能. 方法是解决一类问题的步骤的有序组合 方法包含于类或对象中 方法在程序中被创建,在其他地方被引用 方法的优点 使程序 ...

  8. 5_find grep sed awk 详解

    find :查找文件系统中指定的文件.可以按文件名(-name)  权限(-perm) 归属人 查找. find   要查找文件的路径   表达式 *通配符  可以添加在文件名的任意位置 常用的例子( ...

  9. ZOJ 3811 Untrusted Patrol The 2014 ACM-ICPC Asia Mudanjiang Regional First Round

    Description Edward is a rich man. He owns a large factory for health drink production. As a matter o ...

  10. python网络编程(线程)

    一.socketserver模块 之前的例子中的C/S架构只能实现同一时刻只有一台客户端可以和服务端进行数据交互,我们可以通过socketserver模块实现并发. 基于tcp的套接字,关键就是两个循 ...