0

実際、アプリケーションを からTomcat 5に移行していますTomcat 7.0.37java.lang.abstractmethoderror exceptionサーバーを起動しているときに私に与えています。私はANT自分のアプリケーションを構築するために使用しています。私は多くの投稿を読み、多くの解決策も試しましたが、うまくいきません。スタック トレースは次のとおりです。

org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [jsp] in context with path [] threw exception 
[java.lang.AbstractMethodError: javax.servlet.jsp.JspFactory.getJspApplicationContext(Ljavax/servlet/ServletContext;)Ljavax/servlet/jsp/JspApplicationContext;] with root cause
java.lang.AbstractMethodError: javax.servlet.jsp.JspFactory.getJspApplicationContext(Ljavax/servlet/ServletContext;)Ljavax/servlet/jsp/JspApplicationContext;
    at org.apache.jsp.index_jsp._jspInit(index_jsp.java:22)
    at org.apache.jasper.runtime.HttpJspBase.init(HttpJspBase.java:49)
    at org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:171)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:354)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:391)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:306)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:380)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:243)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:188)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:166)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:288)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:724) 

ant が使用する build.xml ファイルは次のとおりです。

<project name="XYZ" default="all" basedir="..">
    <property name="build" value="build" />
    <property name="parm" value="parm" />
    <property name="src" value="src" />
    <property name="lib" value="lib" />
    <property name="classes" value="classes" />
    <property name="jars" value="jars" />
    <property name="war" value="war" />

    <target name="init">
        <!-- Create the time stamp -->
        <tstamp />  

        <condition property="isIncrementalBuild">
            <and>
                <istrue value="${build.incremental}" />
            </and>
        </condition>
    </target>

    <target name="compile" depends="init" description="Compile component sources">      
        <!--delete dir="WEB-INF/classes/com" quiet="yes" /-->       
        <javac srcdir="src" verbose="true" debug="true" deprecation="true" destdir="WEB-INF/classes">
            <classpath refid="project.classpath" />
        </javac>

    </target>   

    <target name="build" depends="compile" description="Build outofmem">        
        <delete file="war/${webarchive.name}" quiet="no" />
        <war destfile="war/${webarchive.name}" webxml="WEB-INF/web.xml" manifest="mf/META-INF/MANIFEST.MF" >
            <classes dir="WEB-INF/classes" />
            <fileset dir="jsp"/>
            <webinf  dir="./WEB-INF"    includes="**/*" excludes="web.xml, **/*.jar, **/*.class"/>
            <lib file="WEB-INF/lib/*.jar" />
        </war>
    </target>


</project>
4

1 に答える 1

1

これに関する多くの研究開発とほぼ 4 日間の作業の後、IDE からエラーを取り除くことができました。問題は classpath(buildpath) のみにありました。どこでも、競合するjarまたは不一致のjarと、それにつながる可能性のある2つのjarが指定されていると書かれています。しかし実際には、問題を引き起こしている servlet-api、servlet、jsp-api、および jasper に関連する jar があります。buildpath および WEB-INF フォルダーからそれらを削除した後。プロジェクトでコンパイル エラーが発生しても心配しないでください。これは、コンパイル エラーを取り除くためにビルドパスに追加する Apache のサーバー ランタイムによって処理されるためです。これで、アプリケーションをデプロイしてサーバーにアクセスできるようになりました。

ありがとう

于 2014-08-11T10:57:59.800 に答える