gpt4 book ai didi

java - WAR 文件在 tomcat 中工作,但在 Jetty 中给出 UTF-8 错误,为什么?

转载 作者:行者123 更新时间:2023-11-28 22:45:35 24 4
gpt4 key购买 nike

我有使用 m2eclipse + Jetty + eclipse 在本地开发的 Java webapp,每晚部署到 Tomcat。使用 Jetty,当我将 AJAX 帖子发送到服务器时,我收到 UTF-8 错误。相同的代码在 tomcat 中运行良好。

在 Jetty 端,我可以看到所有的 post 参数,所有内容都记录到日志文件中,但随后抛出运行时异常,提示编码无法识别。

我的页面都是UTF-8编码的,帖子里的header也是UTF-8的。似乎 Jetty 或 Eclipse 中的某些东西不喜欢 utf-8 编码,我不知道它可能是什么。

有什么想法吗?

更新:
这是堆栈跟踪。

[Click] [error] java.io.UnsupportedEncodingException: UTF-8;org.eclipse.jetty.io.RuntimeIOException: java.io.UnsupportedEncodingException: UTF-8;
at org.eclipse.jetty.io.UncheckedPrintWriter.setError(UncheckedPrintWriter.java:107)
at org.eclipse.jetty.io.UncheckedPrintWriter.write(UncheckedPrintWriter.java:280)
at org.eclipse.jetty.io.UncheckedPrintWriter.write(UncheckedPrintWriter.java:295)
at org.apache.click.ClickServlet.handleAjaxException(ClickServlet.java:1972)
at org.apache.click.ClickServlet.handleException(ClickServlet.java:458)
at org.apache.click.ClickServlet.handleRequest(ClickServlet.java:390)
at org.apache.click.ClickServlet.doPost(ClickServlet.java:294)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:533)
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:475)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:119)
at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:514)
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:920)
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:403)
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:184)
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:856)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:117)
at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:247)
at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:151)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:114)
at org.eclipse.jetty.server.Server.handle(Server.java:352)
at org.eclipse.jetty.server.HttpConnection.handleRequest(HttpConnection.java:596)
at org.eclipse.jetty.server.HttpConnection$RequestHandler.content(HttpConnection.java:1066)
at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:805)
at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:218)
at org.eclipse.jetty.server.HttpConnection.handle(HttpConnection.java:426)
at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:510)
at org.eclipse.jetty.io.nio.SelectChannelEndPoint.access$000(SelectChannelEndPoint.java:34)
at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:40)
at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:450)
at java.lang.Thread.run(Thread.java:662)
Caused by: java.io.UnsupportedEncodingException: UTF-8;
at sun.nio.cs.StreamEncoder.forOutputStreamWriter(StreamEncoder.java:42)
at java.io.OutputStreamWriter.<init>(OutputStreamWriter.java:83)
at org.eclipse.jetty.server.HttpWriter.getConverter(HttpWriter.java:268)
at org.eclipse.jetty.server.HttpWriter.write(HttpWriter.java:125)
at org.eclipse.jetty.server.HttpWriter.write(HttpWriter.java:107)
at org.eclipse.jetty.io.UncheckedPrintWriter.write(UncheckedPrintWriter.java:271)
... 31 more

最佳答案

java.io.UnsupportedEncodingException: UTF-8;

那个分号很可疑。它不是正常错误消息/跟踪的一部分。

确定您或 Ajax 没有将 Content-Type 设置为 text/html;charset=UTF-8; 或其他什么?使用像 Firebug 这样的 HTTP 请求跟踪器为了确定。不过,我认为它是 Jetty 中的另一个丑陋的错误。显然不希望 header 中有两个以上的属性。如果你喜欢 Jetty,report交给 Jetty 的人。

关于java - WAR 文件在 tomcat 中工作,但在 Jetty 中给出 UTF-8 错误,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5398396/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com