关于JDK1.8和eclipse版本不兼容导致的Arrays cannot be resolved

来源:互联网 发布:crossover软件怎么样 编辑:程序博客网 时间:2024/05/20 14:43

在项目开发中,使用KindEditor富文本插件上传图片时,总是报错

PWC6197: An error occurred at line: 8 in the jsp file: /kindeditor/jsp/upload_json.jsp

PWC6199: Generated servlet error:

Arrays cannot be resolved


报错详细信息如下:

ERROR: Compilation error

org.eclipse.jdt.internal.compiler.classfmt.ClassFormatException

at org.eclipse.jdt.internal.compiler.classfmt.ClassFileReader.<init>(ClassFileReader.java:298)

at org.apache.jasper.compiler.JDTJavaCompiler$1.findType(JDTJavaCompiler.java:367)

at org.apache.jasper.compiler.JDTJavaCompiler$1.findType(JDTJavaCompiler.java:339)

at org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.askForType(LookupEnvironment.java:119)

at org.eclipse.jdt.internal.compiler.lookup.PackageBinding.getType(PackageBinding.java:126)

at org.eclipse.jdt.internal.compiler.lookup.Scope.findType(Scope.java:1351)

at org.eclipse.jdt.internal.compiler.lookup.Scope.getTypeOrPackage(Scope.java:2455)

at org.eclipse.jdt.internal.compiler.lookup.Scope.getBinding(Scope.java:1590)

at org.eclipse.jdt.internal.compiler.ast.SingleNameReference.resolveType(SingleNameReference.java:702)

at org.eclipse.jdt.internal.compiler.ast.MessageSend.resolveType(MessageSend.java:258)

at org.eclipse.jdt.internal.compiler.ast.MessageSend.resolveType(MessageSend.java:258)

at org.eclipse.jdt.internal.compiler.ast.UnaryExpression.resolveType(UnaryExpression.java:210)

at org.eclipse.jdt.internal.compiler.ast.Expression.resolveTypeExpecting(Expression.java:848)

at org.eclipse.jdt.internal.compiler.ast.IfStatement.resolve(IfStatement.java:222)

at org.eclipse.jdt.internal.compiler.ast.Block.resolve(Block.java:101)

at org.eclipse.jdt.internal.compiler.ast.IfStatement.resolve(IfStatement.java:225)

at org.eclipse.jdt.internal.compiler.ast.Block.resolve(Block.java:101)

at org.eclipse.jdt.internal.compiler.ast.WhileStatement.resolve(WhileStatement.java:213)

at org.eclipse.jdt.internal.compiler.ast.Block.resolveUsing(Block.java:115)

at org.eclipse.jdt.internal.compiler.ast.TryStatement.resolve(TryStatement.java:504)

at org.eclipse.jdt.internal.compiler.ast.AbstractMethodDeclaration.resolveStatements(AbstractMethodDeclaration.java:418)

at org.eclipse.jdt.internal.compiler.ast.MethodDeclaration.resolveStatements(MethodDeclaration.java:178)

at org.eclipse.jdt.internal.compiler.ast.AbstractMethodDeclaration.resolve(AbstractMethodDeclaration.java:396)

at org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.resolve(TypeDeclaration.java:1072)

at org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.resolve(TypeDeclaration.java:1121)

at org.eclipse.jdt.internal.compiler.ast.CompilationUnitDeclaration.resolve(CompilationUnitDeclaration.java:305)

at org.eclipse.jdt.internal.compiler.Compiler.process(Compiler.java:512)

at org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:329)

at org.apache.jasper.compiler.JDTJavaCompiler.compile(JDTJavaCompiler.java:503)

at org.apache.jasper.compiler.Compiler.generateClass(Compiler.java:368)

at org.apache.jasper.compiler.Compiler.compile(Compiler.java:437)

at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:608)

at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:360)

at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:486)

at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:380)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)

at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:530)

at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:427)

at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:119)

at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:494)

at org.eclipse.jetty.server.session.SessionHandler.handle(SessionHandler.java:182)

at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:933)

at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:362)

at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:867)

at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:117)

at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:245)

at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:126)

at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:113)

at org.eclipse.jetty.server.Server.handle(Server.java:334)

at org.eclipse.jetty.server.HttpConnection.handleRequest(HttpConnection.java:559)

at org.eclipse.jetty.server.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:992)

at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:541)

at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:203)

at org.eclipse.jetty.server.HttpConnection.handle(HttpConnection.java:406)

at org.eclipse.jetty.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:462)

at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:436)

at java.lang.Thread.run(Thread.java:748)

ERROR: Error compiling file: /Users/liangpx/Documents/BOSS/client/boss_tbs/target/tmp/jsp/org/apache/jsp/kindeditor/jsp/upload_005fjson_jsp.java

[WARNING] /boss/kindeditor/jsp/upload_json.jsp

org.apache.jasper.JasperException: PWC6033: Unable to compile class for JSP


PWC6197: An error occurred at line: 8 in the jsp file: /kindeditor/jsp/upload_json.jsp

PWC6199: Generated servlet error:

Arrays cannot be resolved



at org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:123)

at org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:296)

at org.apache.jasper.compiler.Compiler.generateClass(Compiler.java:376)

at org.apache.jasper.compiler.Compiler.compile(Compiler.java:437)

at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:608)

at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:360)

at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:486)

at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:380)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)

at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:530)

at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:427)

at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:119)

at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:494)

at org.eclipse.jetty.server.session.SessionHandler.handle(SessionHandler.java:182)

at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:933)

at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:362)

at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:867)

at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:117)

at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:245)

at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:126)

at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:113)

at org.eclipse.jetty.server.Server.handle(Server.java:334)

at org.eclipse.jetty.server.HttpConnection.handleRequest(HttpConnection.java:559)

at org.eclipse.jetty.server.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:992)

at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:541)

at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:203)

at org.eclipse.jetty.server.HttpConnection.handle(HttpConnection.java:406)

at org.eclipse.jetty.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:462)

at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:436)

at java.lang.Thread.run(Thread.java:748)


这个错误是由于upload_json.jsp中的这一句代码引起的。

 String fileExt = fileName.substring(fileName.lastIndexOf(".") + 1).toLowerCase();if(!Arrays.<String>asList(extMap.get(dirName).split(",")).contains(fileExt)){out.println(getError("上传文件扩展名是不允许的扩展名。\n只允许" + extMap.get(dirName) + "格式。"));return;} 

然后测试发现是因为JDK1.8和eclipse版本不兼容导致的java.util.Arrays类无法被编译,所以报错(图片来源于其他网友)。




所以,可以把JDK降到1.7或者升级eclipse到最新版本即可,真是神级BUG。

然后还可以修改此处代码为

 //检查扩展名,由于JDK版本1.8.0+Eclipse版本不兼容,导致java.util.Arrays无法编译,此处做一些修改String fileExt = fileName.substring(fileName.lastIndexOf(".") + 1).toLowerCase();/* if(!Arrays.<String>asList(extMap.get(dirName).split(",")).contains(fileExt)){out.println(getError("上传文件扩展名是不允许的扩展名。\n只允许" + extMap.get(dirName) + "格式。"));return;}  */if(extMap.get(dirName).toString().indexOf(fileExt)<0){out.println(getError("上传文件扩展名是不允许的扩展名。\n只允许" + extMap.get(dirName) + "格式。"));return;}

以上就是在使用KindEditor上传图片时发现的一个问题,折腾了好久。


阅读全文
1 0