遇到的问题是:在使用ueditor时,浏览器总报上传文件配置不正确,不能使用上传功能。
一般来说这个问题是因为ueditor/jsp/lib 下面的jar包没有编译到项目里面去导致的。把jar包加入到build里面就可以解决问题了。
我的开发环境就是这样解决的。然后使用jenkins maven打包发布到测试环境也是没问题的。但是发布到生产环境时这个问题又出现了。我一看jar包确实没有在war包解压后的目录下。后面手动导入了jar包还是不行。也参考了很多博客发现没有人碰到和我相同的情况。说了这么多,来看一下具体怎么解决。
我的思路是这样的 既然这个问题是没有jar包引起的,那么我把controller.jsp中的java代码放到controller.java中肯定是编译不通过的。同理,只要我controller.java能编译通过那就说明jar包是build进来了。
看我的实现代码
@RequestMapping("/upload")
public void upload(HttpServletResponse response) {
try {
request.setCharacterEncoding( "utf-8" );
response.setHeader("Content-Type" , "text/html");
String rootPath = request.getRealPath( "/" );
System.out.println(rootPath);
response.getWriter().write( new ActionEnter( request, rootPath ).exec() );
} catch (Exception e) {
log.error(">>>>>>ueditor文件上传服务出错");
}
}
这边写完了之后还需要把ueditor.config.js 里面的serverUrl 修改成刚刚upload的请求路径,因为整个ueditor是放在static静态文件目录下。所以URL需要进行切割
// 服务器统一请求接口路径
// , serverUrl: URL + "jsp/controller.jsp"
, serverUrl: URL.split("static")[0] + "webArticle/upload.json"
像其他的常规解决办法我就不在这里写了。大部分博客都是这么写的。这个问题折磨了我一个下午。写下此文记录,也希望对大家有帮助。
最后贴上错误代码供大家参考
18-Jul-2019 18:12:00.943 SEVERE [http-nio-12002-exec-5] org.apache.catalina.core.StandardWrapperValve.invoke Servlet.service() for servlet [jsp] in context with p
ath [/static] threw exception [Unable to compile class for JSP:
An error occurred at line: [14] in the generated java file: [/opt/tomcat/8.0.21/instancesjs/admin/work/JFB-WX/localhost/static/org/apache/jsp/admin/js/udeitor/jsp
/controller_jsp.java]
Only a type can be imported. com.baidu.ueditor.ActionEnter resolves to a package
An error occurred at line: 12 in the jsp file: /admin/js/udeitor/jsp/controller.jsp
ActionEnter cannot be resolved to a type
9:
10: String rootPath = application.getRealPath( "/" );
11:
12: out.write( new ActionEnter( request, rootPath ).exec() );
13:
14: %>
Stacktrace:] with root cause
org.apache.jasper.JasperException: Unable to compile class for JSP:
An error occurred at line: [14] in the generated java file: [/opt/tomcat/8.0.21/instancesjs/admin/work/JFB-WX/localhost/static/org/apache/jsp/admin/js/udeitor/jsp
/controller_jsp.java]
Only a type can be imported. com.baidu.ueditor.ActionEnter resolves to a package
An error occurred at line: 12 in the jsp file: /admin/js/udeitor/jsp/controller.jsp
ActionEnter cannot be resolved to a type
9:
10: String rootPath = application.getRealPath( "/" );
11:
12: out.write( new ActionEnter( request, rootPath ).exec() );
13:
14: %>
Stacktrace:
at org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:102)
at org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:198)
at org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:450)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:361)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:336)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:323)
at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:580)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:356)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:396)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:340)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:610)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:518)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1091)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:668)
at org.apache.coyote.http11.Http11NioProtocol$Http11ConnectionHandler.process(Http11NioProtocol.java:223)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1517)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1474)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:745)
在使用ueditor时遇到上传文件配置错误,通常因缺少ueditor/jsp/lib下的jar包。确保将jar包加入到build路径,并检查是否在不同环境(如生产环境)中正确打包。尝试将controller.jsp的Java代码迁移到controller.java,如果能编译通过则表明jar包已包含。同时,别忘了更新ueditor.config.js中的serverUrl为上传请求路径。
1万+

被折叠的 条评论
为什么被折叠?



