Server.xml配置.
<Context path="" docBase="E:\Eclipse\workplace1\memweb\.deployables\memweb"
 source="com.ibm.wtp.web.server:memweb"
 reloadable="true" debug="0">
.....
</Context>
<Context path="/ziliao" docBase="F:\temp" reloadable="true">
</Context>以下是我在Server.xml中关于Context的配置.我在Jsp的脚本中
<% 
String confdir=application.getRealPath("/");
System.out.println(application.getServletContextName());
//System.out.println(application.getContext("/ziliao").getRealPath(""));
%>
可是脚本中注释掉的代码会出现:org.apache.jasper.JasperException
异常.
望高手指点一二.

解决方案 »

  1.   

    在线等待,有高手帮我看一下,愁了一上午了,用Google查相关问题也挺少.
      

  2.   

    同意楼上的,因为application本身就是一个ServletContext了
      

  3.   

    application.getRealPath("/ziliao")
    得到不是真正的路径.因为ziliao是另一个Context.
      

  4.   

    <% 
    String confdir=application.getRealPath("/");
    out.println(confdir);//out.println(application.getServletContextName());
    out.println(application.getContext("/jsp").getRealPath(""));
    %>
    我的jsp文件放在e:\jsp下面,我这样写就没有问题,输出了两个e:\jsp
      

  5.   

    application.getContext("/xxx") 是不会导致 org.apache.jasper.JasperException 的。如果名称为 xxx 的应用未部署,会返回 null。如果想获得物理路径,web 应用必须部署为一个展开的目录结构,而不可以部署为 war。但即使如此,也不会导致 org.apache.jasper.JasperException,可能的异常是空引用。
      

  6.   

    楼上的没明白,我的意思不是输出两个E:\jsp,而是一个输出的是:E:\**,另一个是F:\temp.
      

  7.   

    <% 
    String confdir=application.getRealPath("/");//这里怎么会输出E:\**呢?
    out.println(confdir);//out.println(application.getServletContextName());
    out.println(application.getContext("/ziliao").getRealPath(""));//这里应该输出F:\temp?
    %>
      

  8.   

    if(application.getContext("/ziliao")==null) System.out.println("ddd: ");我用这个句子试了一下,果然是null,可是我的两个Context中的/ziliao中的文件可以在web中访问呀,
    .
      

  9.   

    回复: itzhiren因为/对应的目录就是E:盘下的目录,getRealPath()应该对应E:\*\*\**路径.
      

  10.   

    application.getContext("/xxx") 是不会导致 org.apache.jasper.JasperException 的。如果名称为 xxx 的应用未部署,会返回 null。
    我部署了,而且web可以访问ziliao下的文件.
    可为什么就是得不到ziliao这个Context的实际路径呢?而且返回是Null{application.getContext("/ziliao");返回null}
      

  11.   

    重申一下,在一个web程序建立了两个根。一个是是<Context path="/ziliao"...></context>
    另一个是 <Context path=""...></context>,前一个用application.getRealPath();得到真实路径,后一个用application.getContext("/ziliao")得到的是null,所以就无法得到ziliao的真实路径。
      

  12.   

    out.println(application.getRealPath("../"));//这里应该输出F:\temp?
      

  13.   

    ../表示上层目录,但两个Context对应路径根本不在一个分区上。我想从一个根application得到另一个根,然后从得到的根中得到对应路径。
      

  14.   

    楼主,不是没人会,只是不知道楼主你哪里做错了。你再重头做两个应用,每个应用都尽可能简单(第一个应用中只有一个 JSP 或 Servlet,第二个应用中啥都没有),再试一试。只要多做几次,保证可以找到错就所在。
      

  15.   

    我用Eclispe建立一个新工程,只有一个index.jsp文件,默认的根是:myapp
        <Context docBase="F:\Eclipse_Project\workplace1\mytest\.deployables\mytest" path="/myapp" reloadable="true" source="com.ibm.wtp.web.server:mytest"/>
    然后在Server.xml后面加了个/ziliao的根。 
        <Context docBase="F:\temp" path="/ziliao" reloadable="true" />
    在index。jsp文件中加入如下语句:
      <%
    out.println("application path is:"+application.getRealPath(""));%>
    <br>
    <%out.println("application path is:"+((application.getContext("/ziliao")==null)?"null":application.getContext("/ziliao").getRealPath("")));%>
    输出为:
       这只是个测试程序 application path is:F:\Eclipse_Project\workplace1\mytest\.deployables\mytest
    application ziliao path is:null  
       为何得不到ziliao这个根的实际路径?
      

  16.   

    这是一个简单的程序,只有一个index.jsp,大家看一下吧,愁死了,弄不出来。