2

仲間の学生によって開発された OSGi アプリケーションがあり、OS X 10.8 で Java 1.6 を使用して Eclipse Juno 4.2 で実行しようとしています。このアプリケーションのバンドルの 1 つは、JSP と Jetty を使用して Web インターフェイスを提供する役割を果たします。Eclipse でプロジェクトを実行しようとすると、Web インターフェイスにアクセスしようとすると、Equinox コンソールで次の例外が発生します。

2012-08-21 16:15:30.574:WARN:oejs.ServletHandler:/ner/ner
org.apache.jasper.JasperException: /WEB-INF/ner.jsp(5,68) PWC6226: Could not add one or more tag libraries.

at org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:81)
at org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:376)
at org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:133)
at org.apache.jasper.compiler.JspDocumentParser.parse(JspDocumentParser.java:258)
at org.apache.jasper.compiler.ParserController.doParse(ParserController.java:229)
at org.apache.jasper.compiler.ParserController.parse(ParserController.java:145)
at org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:212)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:451)
at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:625)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:492)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:378)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
at org.eclipse.equinox.jsp.jasper.JspServlet.service(JspServlet.java:155)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
at org.eclipse.equinox.http.servlet.internal.ServletRegistration.service(ServletRegistration.java:61)
at org.eclipse.equinox.http.servlet.internal.ProxyServlet.processAlias(ProxyServlet.java:128)
at org.eclipse.equinox.http.servlet.internal.ProxyServlet.service(ProxyServlet.java:68)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
at org.eclipse.equinox.http.jetty.internal.HttpServerManager$InternalHttpServiceServlet.service(HttpServerManager.java:384)
at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:598)
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:486)
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231)
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1065)
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:413)
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:192)
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:999)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:117)
at org.eclipse.jetty.server.Dispatcher.forward(Dispatcher.java:271)
at org.eclipse.jetty.server.Dispatcher.forward(Dispatcher.java:98)
at org.eclipse.equinox.http.servlet.internal.RequestDispatcherAdaptor.forward(RequestDispatcherAdaptor.java:30)
at de.uni_sb.coli.nep.webui.NerServlet.doGet(NerServlet.java:150)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:735)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
at org.eclipse.equinox.http.servlet.internal.ServletRegistration.service(ServletRegistration.java:61)
at org.eclipse.equinox.http.servlet.internal.ProxyServlet.processAlias(ProxyServlet.java:128)
at org.eclipse.equinox.http.servlet.internal.ProxyServlet.service(ProxyServlet.java:60)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
at org.eclipse.equinox.http.jetty.internal.HttpServerManager$InternalHttpServiceServlet.service(HttpServerManager.java:384)
at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:598)
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:486)
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231)
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1065)
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:413)
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:192)
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:999)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:117)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:111)
at org.eclipse.jetty.server.Server.handle(Server.java:350)
at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:454)
at org.eclipse.jetty.server.AbstractHttpConnection.headerComplete(AbstractHttpConnection.java:890)
at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.headerComplete(AbstractHttpConnection.java:944)
at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:630)
at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:230)
at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:77)
at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:606)
at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:46)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:603)
at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:538)
at java.lang.Thread.run(Thread.java:722)

Web インターフェース関連のフォルダー構造は次のとおりです。

WebContent
|----> WEB-INF
       |----> ner.jsp     # This is the template
              lib
              |----> commons-fileupload-1.2.2.jar
                     commons-io-2.0.1.jar
              tld
              |----> c-1_0-rt.tld
                     c-1_0.tld
                     c.tld
                     fmt-1_0-rt.tld
                     fmt-1_0.tld
                     fmt.tld
                     fn.tld
                     permittedTaglibs.tld
                     scriptfree.tld
                     sql-1_0-rt.tld
                     sql-1_0.tld
                     sql.tld
                     x-1_0-rt.tld
                     x-1_0.tld
                     x.tld

Web インターフェイスには でアクセスできるはずですhttp://localhost:8080/ner/nerが、Jetty からは上記と同じ例外で HTTP 500 しか返されません。ターミナルではすべてうまくいきますが、Eclipse ではそうではありません。Eclipse は別のフォルダー構造か何かを予期しているようです。

この問題の原因は何か分かりますか? 一部のファイルの内容を表示する必要がある場合は、お知らせください。この投稿に追加します。よろしくお願いします!

4

1 に答える 1

0

このエラーは王室の PITA であることがわかりました。残念ながら、複数のソースから発生する可能性があります。このエラー メッセージは、いくつかの異なる条件をすべて網羅しているようです。

まず、war ファイルで使用するライブラリがすべて「適切に配置」されていることを確認する必要があります。この質問は、この質問で最もよく回答されていることがわかりました。

それでも問題が解決しない可能性があります-ここではありませんでした!そのため、独自のタグ ライブラリがあり、予約語を使用している場合も、エラーが発生するようです。

例えば:

    <jsp:directive.attribute
            name="minimize"
            type="java.lang.Boolean"
            required="true"
            description="Compress something"/>

この場合、「最小化」によって競合が発生し、このエラー メッセージで報告される可能性があります。

于 2012-09-12T20:08:00.510 に答える