一、事情经过

自从用了Idea后,Eclipse在我这里已经成为了过去,已经起码有三年没有再用过Eclipse了。这次是拿到Eclipse的项目后,导入到Idea中出了点问题。
刚开始是直接从svn拿下来,直接导入到Idea中,没有问题。但是因为项目结构太乱,就删除了一些不相关的目录文件,再上传到svn。然后其他人拿到代码后跑不了了!然后我自己再重新checkout后发现,也是这个错误!

image.png

为什么会找不到类呢?jar包全都在啊?idea中也将目录中的jar包都引进了啊?

二、操作还原

一定是我删除了某个相关文件导致的问题,因此我就将项目回滚到删除相关文件之前的版本,再按之前的删除步骤逐步测试,最后发现了这两个小东西:
image.png

???
这不是导入到项目中后,就可以删掉的吗?之前删了也没有事啊,怎么现在就不行了呢?

三、原因

其实之前的这个项目就是用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配置文件,所以就跑不了了。

我们真的对我们使用的开发工具熟悉吗 ?问题虽然简单,但是只有爬过这一个个的坑,我们才能逐渐的成长为一个 "老司机" ~ ~


小哥
12 声望2 粉丝

虚心学习


引用和评论

0 条评论