解惑

解己之惑,解人之惑

标签:Eclipse

Intellij没有Eclipse好

虽然小胖很喜欢Intellij,并且预言我会喜欢上Intellij,但是用了超过4个月,我并没有喜欢上它,但是也没有像原来那样感觉它太花哨或者难用。公平的讲,Intellij是很不错的,功能做得很完善,特别是代码提示方面,但是似乎仅此而已。从我到现在使用的经验而言,Intellij提供的功能,Eclipse都提供了(有的是插件提供的,Intellij一样),但是在几个方面我感觉Intellij比不上Eclipse。
首先是多个工程,Eclipse下可以打开多个工程,在同一个Eclipse实例里面,但是Intellij只能打开一个工程。
第二就是Hot deploy,Intellij里面也有些插件做这个事情,例如AutoPackage,但是做得不够好,因为修改完代码以后需要保存,在Make Project(CTRL+F9),然后就被自动重新发布了,但是如果装了MyEclipse或者经过简单的配置,在Eclipse下,只需要保存下修改,Eclipse会自动编译并且修改会被发布,这个是JVM支持的功能。
第三就是语法高亮,如果把Eclipse里面的代码拷贝到富文本编辑器,例如Word或者发邮件,拷贝出来的代码是带语法高亮的,Intellij拷贝出来的没有语法高亮

Eclipse的一个问题

最近遇到的,偶然间解决的,如果一些文件和目录已经被Workspace中的一个工程引用(即使是处于Close状态的),如果你另外的工程创建到那些文件的引用的时候会报错,你刷新的时候也会出问题。最简单的解决办法就是关闭其他的工程,需要的时候再打开。

推荐一个Eclipse插件:Implementors

也许有点老土了,但是这个插件确实是刚刚别人推荐给我的,而且很好用,特别是对于EJB开发之类的需要提供接口并实现的情况下,不用再自己去找实现类了。
感兴趣的自己去下载吧。

Hot Deploy成功

前几天曾经抱怨新公司的开发环境太复杂,不能Hot Deploy,极其影响开发的效率,今天成功的在Eclipse(实际上是MyEclipse)中配置好了可以Hot Deploy的环境,其实也很简单,我们的工程发布非常的复杂,sar, ear, har, jar, war一个套一个,要想严格的按照那个目录结果配置工程几乎不可能,但是要想Hot Deploy很简单,配置一个Web工程,引入全部的工程需要的类,把Jar包修改为手工发布,然后使用MyEclipse的Manage Deployment发布,只要你的这个web工程先于原来的工程发布就行了,对于同名的类,由于新的工程先加载,所以也就可以达到Hot Deploy的目的了,现在修改了源代码,保存一下就可以生效了,爽啊

更新:
关于类加载,找到理论依据:
Packaging J2EE applications for JBOSS 3.2.1

By default, all the EARs in a jboss instance, under, JBOSS_HOME/server/jboss-instance-name/deploy/ use the same loader repository and hence, a class found in one can be used by the other. But we don’t like calling this bug a feature as it goes against the idea of scoping by EAR. Fortunately, JBoss provides a way to supress this behaviour through what they call as deployment based scoping.

太复杂了!!!

今天总算是把工程在Eclipse下配置好了,而且没有任何错误,从Oneal那里拷贝来的工程文件一堆错误,我这个人又是那种容不得满眼全是错误的人,花了一个小时搞定这个问题,开始熟悉项目,结果是:真是太复杂了!
系统的大部分都是通过Web Service调用的,包括和其他的系统集成以及和工作流引擎集成,而Web Service又是通过Session Bean调用DAO,DAO再调用hibernate,而Session Bean用到了版本2和版本3(也就是同时使用了EJB2和EJB3),因此工程有N个EJB的模块,源代码也分布在几十个大大小小的目录中,同时Web工程也是N个模块,另外还使用到了LDAP完成用户登陆,Eclipse工程目前只是用于远程调试和编译,最主要是写代码,完全失去了IDE最重要的功能。(这个是目前的理解,不排除遗漏的东西以及误解)

如果发现问题或者要修改Bug,抱歉,不能Hot Deploy,必须修改代码后使用Ant编译并发布好,然后重启Jboss,Ant一般情况下至少需要5分钟,即使是修改一个properties也要2分钟才能跑完,然后重启Jboss需要8分钟(我的是新安装的机器,比较快,其他的人的需要10分钟左右),天啊,开发效率怎么可能高啊!
不过这也正好给我一个机会,上一家公司的情况也是类似,大家修改什么也是先Ant再重启Jboss,一般也至少要10分钟,后来我就在Eclipse下配置了可以Hot Deploy的工程,如果只是修改代码内容,不新增EJB类或者方法就不用Ant编译了,修改了代码保存下就更新了,开发速度提高很多,我这个月的任务就是在这个公司也把这个工程搞出来,这样弄完以后对项目的熟悉程度也会上一个台阶。

待掌握的Eclipse快捷键

昨天整理了下我常用的Eclipse快捷键,今天看了下别人整理的,发现还有些需要掌握的:

  • Ctrl+D:删除光标所在行
  • Ctrl+K:将光标停留在变量上,按Ctrl+K键可以查找到下一个同样的变量
  • Shift+Ctrl+K:和Ctrl+K查找的方向相反
  • Shift+Ctrl+X:将所选字符转为大写
  • Shift+Ctrl+Y:将所选字符转为小写
  • Ctrl+M:快速对当前视图最大化
  • Ctrl+O:在代码中打开类似大纲视图的小窗口
  • 双击左括号(小括号、中括号、大括号),将选择括号内的所有内容。
  • Ctrl+1:光标停在某变量上,按Ctrl+1键,可以提供快速重构方案。选中若干行,按Ctrl+1键可将此段代码放入for、while、if、do或try等代码块中。
  • F3:打开声明该引用的文件

最后是一个可能不会常用的快捷键,如果掌握了这些想掌握的快捷键的话:CTRL+SHIFT+L:列出快捷键列表。

我最常用的Eclipse快捷键

有人整理了Eclipse的全部快捷键,但是要记住全部的快捷键也没有必要,下面的这些是我最常用的快捷键,和大家交流下:

  • CTRL+SHIFT+T:根据名字查找类,可以使用通配符,只能查找类,可以是工程引用的包中的类
  • CTRL+SHIFT+R:根据名字查找资源,可以是jsp,xml,js等任何文件
  • F11:以DEBUG模式运行上次运行的类
  • F5:单步进入,进入当前调试的代码行执行
  • F6:单步执行当前行
  • F8:执行到下一个断点
  • ALT+SHIFT+R:重命名选择的文件名,如果是类的话,将进行重构,同时修改相关的引用
  • ALT+上下箭头:将当前行或者选中的行上移或者下移一行
  • ALT+/:代码自动补全
  • CTRL+SHIFT+O:自动导入需要的类
  • CTRL+SHIFT+F:格式化当前文件或者选中的行
  • CTRL+L:定位到指定的行
  • CTRL+/:注释/取消注释
  • CTRL+ALT+H:打开调用层次,如果要知道一个方法的调用入口时很有用
  • CTRL+Z:取消上次修改(Undo)
  • CTRL+Y:重复上次修改(Redo)

遭遇OutOfMemoryError

进行运行全部的测试用例的时候发现不能运行完了,到了后面的一些测试用例的时候出现OutOfMemoryError,程序并没有什么大内存消耗,上网查了一下,发现可能是junit导致的,因为teardown并没有清理掉使用过的内存,没有办法,只能修改Run的时候的参数,把内存加大,问题解决。
Eclipse启动JUnit的时候设置的值大概是64M左右,而我加大内存后监控内存使用的结果表明全部的测试用例需要使用100M内存。
方法为:Run->Run…->JUnit->AllTests->(x)=Arguments->VM Arguments: -Xmx500m
注意上面的AllTests为自己要修改的那个包含全部测试用例的Test suite的类。

© 2019 解惑

本主题由Anders Noren提供向上 ↑