一、事情经过
自从用了Idea后,Eclipse在我这里已经成为了过去,已经起码有三年没有再用过Eclipse了。这次是拿到Eclipse的项目后,导入到Idea中出了点问题。
刚开始是直接从svn拿下来,直接导入到Idea中,没有问题。但是因为项目结构太乱,就删除了一些不相关的目录文件,再上传到svn。然后其他人拿到代码后跑不了了!然后我自己再重新checkout后发现,也是这个错误!
为什么会找不到类呢?jar包全都在啊?idea中也将目录中的jar包都引进了啊?
二、操作还原
一定是我删除了某个相关文件导致的问题,因此我就将项目回滚到删除相关文件之前的版本,再按之前的删除步骤逐步测试,最后发现了这两个小东西:
???
这不是导入到项目中后,就可以删掉的吗?之前删了也没有事啊,怎么现在就不行了呢?
三、原因
其实之前的这个项目就是用Eclipse构建的。.project主要是描述工程的基本信息:
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>MyServer</name>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
</natures>
</projectDescription>
name是项目名,natures运行时需要的额外Eclipse插件,及其buildSpec具体加载方式信息。
再看看.classpath:
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="admin"/>
<classpathentry kind="lib" path="libs/commons-io-1.4.jar"/>
</classpath>
kind="src" : 源文件的具体位置
kind="lib" : 工程的library的具体位置信息
看到这里就应该能知道为什么会出现ClassNotFoundException了,因为之前在Eclipse中,就是依靠它来指向jar包的位置的。
那为什么之前没有问题而删除后就有问题了呢?因为我删除后提交了代码,导致svn上的项目少了这两个Eclipse文件。为什么我在本地能跑项目,其他人就不可以呢?
因为我从svn上把项目拉下来,导入到idea的时候,会自动根据这两个文件构建出idea自己的iml工程配置文件,来指向那些jar包路径。即使我删除了.classpath文件,但是我本地已经有了iml文件,所以项目能跑起来。我删除后svn上就没有了,其他人拉代码下来,不能生成Idea的iml配置文件,所以就跑不了了。
我们真的对我们使用的开发工具熟悉吗 ?问题虽然简单,但是只有爬过这一个个的坑,我们才能逐渐的成长为一个 "老司机" ~ ~
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。