error the @annotation pointcut expression is only supported at Java 5 compliance level or above

碰到了这个error the @annotation pointcut expression is only supported at Java 5 compliance level or above报错,一看就知道是jar包冲突,在网上百度了半天,大部分的说法都是把org.aspectj:aspectjweaver:jar包升级到1.6以上,但是我尝试了还是不行。这种spring的jar冲突,基本只能考百度谷歌了。

后来把dependency tree打印出来,搜索aspectj后,发现我的工程里面除了aspectjweaver外,还有个aspectjtools,这两个的版本都偏低,于是把这两个包都升级到了1.7.3,重新mvn clean install eclipse:eclipse后果然成功。

我只想说这些jar包冲突真的好坑爹啊

Reference

Error when using AspectJ AOP with Java 7

eclipse的hot swap功能失效导致代码修改后必须重启web应用:Absent Line Number Information

很长时间一直被ecipse的hotSwap功能失效问题困扰,hotSwap是jvm的一个重要功能,它可以让你在正在运行的程序中,修改方法体内容,修改后的代码能在应用不重启的条件下生效。而且经常提示这样的错误:

Absent Line Number Information

The virtual machine was unable to remove all stack frames running old code from the call stack. The virtual machine is not supplying the debugger with valid data for those frames. Stepping into these obsolete frames may be hazardous to the target virtual machine

hotSwap这个功能能大大降低开发调试成本。可是原本eclipse中能正常工作的hotSwap功能居然不能用了。在网上找了很多的方案,基本都是在说Preferences –> Java –> Compiler –> Classfile Generation的几项要勾上。但是eclipse默认这几项就是勾上的。

经查阅n多资料后,发现其本质原因是虚拟机和调试器不配套。说明很可能有两套javac.exe(用来编译的)和jdb.exe(用来调试的)同时被使用了,而这两套还不是来自同一个jdk的。顺着这个思路,我查看了下我的环境变量,在cmd中敲”echo %PATH%”:

C:\Program Files (x86)\Common Files\NetSarang;D:\amd\AMD APP SDK\2.9\bin\x86_64;D:\amd\AMD APP SDK\2.9\bin\x86;C:\Program Files (x86)\AMD APP SDK\2.9\bin\x86_64;C:\Program Files (x86)\AMD APP SDK\2.9\bin\x86;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;D:\software\apache-maven-3.0.5\bin;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;%GOBIN%;C:\Program Files (x86)\Git\cmd;%GROOVY_HOME%\bin;C:\Program Files\TortoiseSVN\bin

jdk只配置了一个,看起来没什么异样。我尝试用everything软件在整个硬盘上搜索javac.exe,结果发现有两个javac.exe,一个在jdk下,还有一个在%SystemRoot%\system32下,而且这个system32目录下还有个java.exe。看来问题应该是在这里了,至于为什么system32下会有javac.exe,就不得而知了,把java相关的exe文件都删除后,再试了试果然hotSwap功能恢复了。

困扰我许久的问题终于被解开了。

Reference

http://stackoverflow.com/questions/957822/eclipse-unable-to-install-breakpoint-due-to-missing-line-number-attributes