在应用程序中添加UTF8支持并设置所需的JVM选项后,Tomcat(开发)无法启动

在应用程序中添加UTF8支持并设置所需的JVM选项后,Tomcat(开发)无法启动,tomcat,configuration,jvm,myfaces,Tomcat,Configuration,Jvm,Myfaces,我无法启动Tomcat 7.0.27。这不是服务器故障问题,因为这是我的开发服务器。我正在使用IntelliJ IDEA,在向应用程序添加筛选器之前,我的应用程序没有运行任何错误。这个过滤器不是问题的原因,因为我在我的生产服务器上成功地使用了它,IDEA在那里编译、打包和运行它,没有任何阻碍我开发的问题。 那我的问题是什么 我注意到Tomcat冒出了一个小错误。它不登录到日志文件,但读取: Unable to use direct char[] access of java.lang.Strin

我无法启动Tomcat 7.0.27。这不是服务器故障问题,因为这是我的开发服务器。我正在使用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使用UTF-8 JVM将对我有所帮助。我发布的值是否存在可见错误?

您的错误只是一个调试信息:

关于代码,它尝试检测String类是否已被包装,是否有其他方法。如果是,grails将使用一个优化的版本,否则返回

所以你可以忽略这个错误


HIH

您的错误只是一个调试信息:

关于代码,它尝试检测String类是否已被包装,是否有其他方法。如果是,grails将使用一个优化的版本,否则返回

所以你可以忽略这个错误


HIH

问题在于您的myfaces版本。我也有同样的问题,可以通过升级到最新的myfaces版本来解决。我特别更新了以下两个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.(StringCharArrayAccessor.java:63)


这在Java6中可以正常工作,但在Java7中却不行。我猜
count
字段已经从Java7实现中删除了。幸运的是myfaces团队已经解决了这个问题。只需更新jar文件(见上文)。

问题在于您的myfaces版本。我也有同样的问题,可以通过升级到最新的myfaces版本来解决。我特别更新了以下两个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.(StringCharArrayAccessor.java:63)


这在Java6中可以正常工作,但在Java7中却不行。我猜
count
字段已经从Java7实现中删除了。幸运的是myfaces团队已经解决了这个问题。只需更新jar文件(见上文)。

等号(=)在最后一行做什么?@informatik01谢谢。等号(=)在最后一行做什么?@informatik01谢谢。谢谢。我还设法确定这可能是一个与Tomcat有关的jk7问题,但我在上面提到的论坛是Ubuntu,可能特别与Ubuntu打包的JDK有关,所以我没有就此发表文章。谢谢。我还设法确定这可能是一个与Tomcat有关的jk7问题,但我在上面提到的论坛是Ubuntu,可能特别与Ubuntu打包的JDK有关,所以我没有在这里发表这方面的文章。
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