刚刚升级了新版本的MyEclipse 2016 CI 7,却发现没有破解成功,于是就降低了版本使用了CI3,破解成功,然后吧自己的项目导进来,废了半天劲,总体感觉有点卡,不大爽,今天做了一个小项目,javaweb程序,运行时发现一个非常奇怪的问题,搞了大半天,能把人气死,我把项目,文件,文件内容,服务器,过滤器这类的都使用统一编码UTF-8,结果发现运行系统,只要存在中文统统是乱码显示,后来查询编译内容,源码1kb文件被编译成了快90kb,一系列调试确定不是代码问题,原来尼玛是IDE编辑器的问题,下面是解决方案,引用一个朋友的文章,感谢!
问题说明
MyEclipse 2016目前最新版为CI 3,从CI 1起,添加了live preview功能,也就是实时预览,详情看官网介绍,这个功能在web项目中是默认开启的。但是这个功能引发的bug目前还得不到解决,已经得到官网的证实,确实是一个bug,并且会在后续版本中更新。
bug详情
开启live preview功能后,发布web项目时,myeclipse会自动在所有jsp文件的标记中添加 “data-genuitec”属性,注意是发布时,生成到tomcat webapp目录里面的jsp,通过这个属性,MyEclipse实现了live preview功能,但是开启tomcat,发布项目后,访问项目地址会报以下错误:
org.apache.jasper.JasperException: /index.jsp (line: 2, column: 0) Forward has invalid attribute: data-genuitec org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:41) org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:275) org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:91) org.apache.jasper.compiler.JspUtil.checkAttributes(JspUtil.java:200) org.apache.jasper.compiler.Validator$ValidateVisitor.visit(Validator.java:589) org.apache.jasper.compiler.Node$ForwardAction.accept(Node.java:1092) org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2376) org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:2428) org.apache.jasper.compiler.Node$Visitor.visit(Node.java:2434) org.apache.jasper.compiler.Node$Root.accept(Node.java:464) org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2376) org.apache.jasper.compiler.Validator.validateExDirectives(Validator.java:1853) org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:217) …
示例index.jsp文件内容为:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html data-genuitec="wc1-6-177"> <head data-genuitec="wc1-6-178"> <title data-genuitec="wc1-6-179">My JSP 'index.jsp' starting page</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" data-genuitec="wc1-6-180"/> <meta http-equiv="pragma" content="no-cache" data-genuitec="wc1-6-181"> <meta http-equiv="cache-control" content="no-cache" data-genuitec="wc1-6-182"> <meta http-equiv="expires" content="0" data-genuitec="wc1-6-183"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3" data-genuitec="wc1-6-184"> <meta http-equiv="description" content="This is my page" data-genuitec="wc1-6-185"> <script data-genuitec="wc1-6-186">
也就是<jsp:forward/>
标签中的data-genuitec
属性不能够被解析,删除index.jsp文件中的该属性就可以正常访问项目了,但是这样之后又有另外一个问题,就是项目编码有问题,项目源码中的jsp编码没问题,但是发布后,也就是MyEclipse添加data-genuitec
属性后复制到tomcat的webapp目录中的jsp编码有问题,所以怀疑是MyEclipse的问题
Problems About Live Preview With MyEclipse 2016 CI 3
解决方法
目前只能等官网发布新版本了,临时解决方法就是关闭live preview功能,其实这个功能很有用,期待以后的版本吧。
关闭方法如下:
两种方法都可以。
2016.6.29更新
今天收到官方开发人员发来的邮件,说myeclipse 2016 CI 3更到了CI 4,于是赶紧更新了下,发现之前的注入属性问题和编码问题都解决了,除了Live Preview改名为CodeView,外加图标换了之后,方法使用是一样的,默认服务器不开启CodeView
发布项目之后,访问网站,发现浏览器中多了一个面板:
可以选择开启CodeView功能的文件(会发现,开启功能的这些文件都被注入了data-genuitec
属性,不过这次没有exception),另外还有一些待开发的功能,我也是非常期待的,期待下次update
官网CodeView文档:https://www.genuitec.com/products/webclipse/learning-center/using-live-preview/
虽然我目前在使用IDEA,并且越来越感觉到IDEA的方便,不过myeclipse的这些功能也是很实用的。
附上面板功能截图:
未经允许请勿转载:程序喵 » MyEclipse2016 CI 3 live preview功能引发的问题