2

Tomcat7.0.27を起動できません。これは私の開発サーバーであるため、これはServerFaultの質問ではありません。IntelliJ IDEAを使用していますが、アプリケーションにフィルターを追加する前に、アプリケーションでエラーが発生しませんでした。このフィルターは、IDEAがコンパイル、パッケージ化、実行する本番サーバーで問題なく使用しているため、問題の原因ではありません。開発を妨げる問題はありません。それでは私の問題は何ですか?

Tomcatからバブルするマイナーエラーに気づきました。ログファイルにはログインしませんが、次のように読み取ります。

Unable to use direct char[] access of java.lang.String
java.lang.NoSuchFieldException: count
    at java.lang.Class.getDeclaredField(Class.java:1899)
    at org.apache.myfaces.shared.util.StringCharArrayAccessor.<clinit>(StringCharArrayAccessor.java:63)
    at org.apache.myfaces.shared.util.StreamCharBuffer.readAsString(StreamCharBuffer.java:605)
    at org.apache.myfaces.shared.util.StreamCharBuffer.toString(StreamCharBuffer.java:631)
    at org.apache.myfaces.shared.renderkit.html.HtmlResponseWriterImpl.writeScriptContent(HtmlResponseWriterImpl.java:484)
    at org.apache.myfaces.shared.renderkit.html.HtmlResponseWriterImpl.endElement(HtmlResponseWriterImpl.java:416)
    at org.apache.myfaces.view.facelets.compiler.EndElementInstruction.write(EndElementInstruction.java:38)
    at org.apache.myfaces.view.facelets.compiler.UIInstructions.encodeBegin(UIInstructions.java:46)
    at org.apache.myfaces.view.facelets.compiler.UILeaf.encodeAll(UILeaf.java:505)
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:764)
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:764)
    at org.apache.myfaces.view.facelets.FaceletViewDeclarationLanguage.renderView(FaceletViewDeclarationLanguage.java:1900)
    at org.apache.myfaces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:285)
    at org.apache.myfaces.lifecycle.RenderResponseExecutor.execute(RenderResponseExecutor.java:115)
    at org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:241)
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:199)
    at org.apache.myfaces.webapp.MyFacesServlet.service(MyFacesServlet.java:112)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at com.buhaugane.web.filters.CharsFilter.doFilter(CharsFilter.java:38)
    at ...

オンラインで見ると、TomcatにVMのパラメータを追加する必要があると思われます。catalina.bat具体的には、JVMをutf-8で実行するように要求するパラメータを追加する必要があります(ちなみに、Windows 8を使用しています)。削除するとすべてが修正されるため、このイライラの唯一の原因は、コンテナによって初期化されたときにロードされたUTF-8値でHTTPリクエストを変更することだけです。request.setCharacterEncoding(encoding);ファイルに以下を追加しようとすると、Tomcatが起動しませんでした。 、私が与えた変数に無効な値が含まれていると不平を言っています。そのまま書かれています。私の開発環境が本番環境を模倣できるように、この問題を解決するための支援をお願いします。どんな援助も大歓迎です。

私が使用する変数は次のように構成されています。

set JAVA_OPTS=%JAVA_OPTS% ^
-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager ^
-Djava.util.logging.config.file=%CATALINA_BASE%\conf\logging.properties ^
-Xms128m -Xmx256m ^
=-Dfile.encoding=UTF-8

つまり、将来の問題を引き起こす可能性のあるすべてのエラーを排除したいと思います。TomcatにUTF-8JVMを使用するように指示すると役立つと思います。投稿した値に目に見えるエラーはありますか?

4

2 に答える 2

2

発生したエラーは単なるデバッグ情報です:https ://github.com/grails/grails-core/blob/master/grails-web/src/main/groovy/org/codehaus/groovy/grails/web/util/ StringCharArrayAccessor.java

コードに関しては、Stringクラスがラップされているかどうかを検出し、いくつかの追加メソッドがあります。はいの場合、grailsは最適化されたバージョンを使用し、そうでない場合はフォールバックを使用します。

したがって、おそらくこのエラーは無視できます。

こんにちは

于 2013-01-08T13:54:09.913 に答える
2

問題はmyfacesバージョンにあります。同じ問題が発生し、最新のmyfacesバージョンにアップグレードすることで修正できました。特に、次の2つのjarファイルを更新しました。

  • myfaces-api.jar(バージョン2.1.10まで、以前は2.1.6を使用していました)
  • myfaces-impl.jar(バージョン2.1.10では、以前は2.1.6を使用していました)

ここでエラーが発生しました:org.apache.myfaces.shared.util.StringCharArrayAccessor.<clinit>(StringCharArrayAccessor.java:63)

これはJava6では正常に機能していましたが、Java7では機能しませんでした。このcountフィールドはJava7の実装から削除されたと思います。幸い、myfacesチームはすでにその問題を修正しています。jarファイルを更新するだけです(上記を参照)。

于 2013-02-28T16:20:14.990 に答える