weblogic服务器上类或者方法找不到的解决办法

下面以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>

最后重启应用即可.

时间: 2024-08-15 23:05:55

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

OS X运行AFNI的AlphaSim提示libgomp.1.dylib找不到的解决办法

运行环境:OS X Mavericks 10.9.4,AFNI 问题描述: 运行AlphaSim命令时,提示以下信息dyld: Library not loaded: /usr/local/lib/libgomp.1.dylib  Referenced from: /Users/qying/Documents/macosx_10.7_Intel_64/AlphaSim  Reason: image not foundTrace/BPT trap: 5 这是由于没有安装OpenMP引起的,导致Al

http中 get方法 传送中文参数乱码解决办法

http传送参数有两种方法:get 和post  当时使用get方法传递中文参数是会有乱码现象 解决办法: 1.在jsp压面url后面的参数使用 encodeURI:"&zxbghy="+ encodeURI(zxbghy) 2.在后台java获取参数时使用字节数组:temphgdmhy = new String(hgdmhy.getBytes("ISO-8859-1"), "UTF-8");  案例,用get方法传递两个中文参数:zxb

Hibernate的Antlr在Weblogic中产生Jar冲突的历史缘故以及解决办法

Hibernate使用的文法分析器是antlr,WebLogic同样也是. 不少用户碰到ClassNotFoundException: org.hibernate.hql.ast.HqlToken的典型问题,这个典型问题已经通过 配置weblogic.xml,要求Web应用优先加载WEB-INF的Jar(即应用Classloader)而非WebLogic的System Classloader得以勉强解决: <weblogic-web-app>   <container-descripto

android RadioGroup调用check(id)方法时,onCheckedChanged方法被执行多次解决办法

如题,本来只想在切换选项后同步下菜单项,结果onCheckedChanged方法执行多次,导致程序出现错误.查了半天,结果也没找出好的解决方法.最后,只能根据http://blog.csdn.net/piglovesula/article/details/9820521 供的方法,用radioButton.setChecked(true)方法替换了.我是用以下方法替换的,如果高人有好方法,求指教: for (int i = 0; i <group.getChildCount(); i++) { 

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

PATH改错了找不到命令 解决方法: 重新定义PATH export PATH=/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin ??!?? 原文地址:https://www.cnblogs.com/mafeng/p/10751513.html

【转】Xcode方法提示不显示的解决办法

转自:http://southking.iteye.com/blog/1558385 Xcode方法提示显示的不正确,只显示方法名称不显示参数及参数值的解决办法是: 右击“Finder” 选择 “前往文件夹” 输入 “~/Library”,进入“Developer”  -> "Xcode" -> "DerivedData",删除所有东西,重启Xcode.

eclipse调试找不到源解决办法

eclipse调试时有时显示找不到源码,首先得确定代码没问题 这是eclipse没有发现工程源码,解决办法是 右键工程>>Debug As >> Debug configurations 选择添加使用的工程,顺便可以将Default 删除掉 到此就大功告成,重新将项目启动即可

linux服务器centos系统apache路径不区分大小写的解决办法

大家都知道linux服务器的centos系统.ubuntu系统等 访问路径都是区分大小写,这里分享centos系统下apache路径不区分大小写的解决办法.修改 http.conf文件: usr/local/apache/为我的环境apache目录,完成上述后会在/usr/local/apache/modules/目录下多一个mod_speling.so模块文件 在/usr/local/apache/conf/httpd.conf中加上 1 2 LoadModule speling_module

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

把VS2010开发的网站.net4.0部署到Windows Server 2003的服务器上去, Windows Server 2003操作系统自带的为IIS 6.0,IIS 6.0一般只支持.NET 2.0的程序,这就需要配置服务器上的IIS 6.0达到支持.NET 4.0的目的.在网上查找了一些文章,以供大家查阅和参考,主要有以下几个步骤: 一.升级.net framework至4.0 如果服务器已经安装了VS2010,则其中已经包含安装了.net 4.0 framework,否则就需要另外