今儿说起这个呢,缘于公司的所有项目业务(Portlet EC、CRM、OA..)都放在了同一个工程下面,由于各项目业务的不断扩大,导致整个工程异常的庞大,并且到VSS库里拿代码呢也要拿些与本项目无关的许多代码,由于没有拆分,造成整个工程代码的拥肿。
最近呢,公司就对各个组里的代码进行了拆分,共用一个公共模块(整个架构的必备功能),然后各个组拿各个组的代码,互不干扰。真的是很好的做法。
当同事今天把项目拿下来的时候,发现了不少的问题,项目启动的时候,报一些配置文件找不到对应的class文件,还有就是代码Debug不了,对代码打上断点,总是会跳出找不到资源的错误,这下可郁闷了,都在啊!
查看tomcat的webapps目录,发现WEB-INF下没有对应的class文件,却多了每个工程组里的打包jar文件,原来如此呀,现在代码不编译到class目录下了,跑到jar包里了,难怪呢!
OK,我们在用MyEclipse建工程的时候呢,只知道下一步,下一步的,其中的具体含义我们有时也略知一二,但是具体的这些操作影响配置在哪里呢,.classpath告诉你。
现截取几个典型的classpath元素如下图所示:
<classpathentry kind="src" path="src"/>
<classpathentry exported="true" kind="lib" path="WebRoot/WEB-INF/lib/spring-aop.jar"
sourcepath="E:/spring-framework-2.5.5/dist/spring-sources.jar"/>
<classpathentry exported="true" kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="lib" path="reflib/portal.jar"/>
<classpathentry kind="output" path="WebRoot/WEB-INF/classes"/>
1) 该项表示源文件,并指明了源文件的路径;
2) 该项表示库文件或目录,并指明了相应的jar存放路径;
3) sourcepath,对了,就是存放的对应该jar包的源文件路径了;
4) eclipse中project相关的配置,每个项目中的必有项,当然了,还有别的没有列出,具体看.classpath文件;
5) 关键的问题所在,不加载项目中的新编译的class文件就是因为它走这个jar;
6) 该项表示编译路径,指明了*.java文件被编译成*.class文件后的存放路径。该项为默认存放路径,也意味着在.classpath文件中只能存在一项kind="output"。
以上分别对应Java Build Path相对应的Source 和 Library项,可以根据需要进行调整。
原来是这样呀,OK,明白了,现调整.classpath ,去掉第5)点,问题搞定。
2011-12-14更新
虽然种种的前辈告诉我们,IDE只不过是我们编程人员的一种工具罢了,跟学习语言本身没有直接联系!不应该把重点放在IDE上面,这句话我不敢妄自菲薄的说对错。可现实是,有很多的事情,你还就得把这个前奏工作做好,不然你都没有办法开展工作。
简简单单的用一个@Override注解却报错,为什么?!我想很多新手都为此困惑过,查了多久都不知道为什么,吭爹吧!
这实际上是有个关于JDK5.0和JDK6.0的关于@Override的小小区别: