eclipse bug(四)项目红叉
之前粗心大意,不知道用Problems视图,真不应该
0.查看Problems视图,定位错误,发现处理之;
1.检查Build Path中的各个依赖jar及library是否有warning的标志,若有,处理之;
2.project->clean 工程;
3.window->preference->java->complier->building->build path problems->cirluar dependency设置成warning
4.对于安装有Maven插件的,可以右键项目->Maven->Update Project;
Refer:
http://christhb.blog.163.com/blog/static/9898249201171502827979/
总结: 问题原因:工程中classpath中指向的包路径错误 解决办法:到BUILDPATH CONFIG````中,liberaies中 出现红色叉号的包为路径错误的包。到classpath中修改相应包的当前路径。然后回到eclipse中F5刷新工程。 下面两段为我解决此问题时在网上找的参考资料,可参阅: 你用myeclipse新建 web工程, 在工程目录下会生成一个 .classpath 配置文件, 组里每个人做的方向不一样,由于没有配置svn之类的东西,整合的时候需要copy项目,当时的想法很幼稚,直接就在eclipse中import项目了,可项目上总是出现一个红感叹号不知道为什么,看看package里的class也没有报错,有时候可以正常运行,但昨天发现了许多错误:一运行就提示找不到某某类,可是查看WEB-INF下的lib,里面明明有,为什么找不到呢?查了好久,就是找不到原因,后来从一个帖子上找到了查找错误的思路:看eclipse的Markers这个视窗,真是个好东西啊!出现这种情况一般都是classpath的问题,由于在我自己的开发环境中,我的lib库是自己的user library,引用自己某个地方的类,可是当别人import进自己的eclipse中时,eclipse查看.classpath文件的配置,发现没有需要的类库,当然会有问题。
这个是myeclipse的验证功能 右击项目->MyEclipse->Remove All Validation Markers就可以了 |
v一、问题描述
1.错误截图如下。
2.设计的问题
在Eclipse中新建了一个Maven工程, 然后更改JDK版本为1.6, 结果每次使用Maven > Update project的时候JDK版本都恢复成1.5。
v二、原因分析
Maven官方文档有如下描述:
编译器插件用来编译项目的源文件.从3.0版本开始, 用来编译Java源文件的默认编译器是javax.tools.JavaCompiler (如果你是用的是java 1.6) . 如果你想强制性的让插件使用javac,你必须配置插件选项 forceJavacCompilerUse.
同时需要注意的是目前source选项和target 选项的默认设置都是1.5, 与运行Maven时的JDK版本无关.如果你想要改变这些默认设置, 可以参考 Setting the -source and -target of the Java Compiler中的描述来设置 source 和target 选项.
这是Maven已知的一个特性。除非在你的POM文件中显示的指定一个版本,否则会使用编译器默认的source/target版本1.5。主要还是在于Eclipse中Maven的集成方式起到了关键作用, 它会从POM文件中生成项目的.project,.classpath以及.settings, 因此除非POM文件指定了正确的JDK版本, 否则你每次更新项目配置的时候它都会重置到1.5版本。
v三、解决办法
eclipse maven 在项目的pom.xml的<build></build>标签中加入:
<plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.1</version> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> </plugins>
保存,项目构建完成后在项目文件夹上点右键,选择Maven->Update Project Configuration,问题解决。
2)java compiler level does not match the version of the installed java project facet因工作的关系,Eclipse开发的Java项目拷来拷去,有时候会报一个很奇怪的错误。明明源码一模一样,为什么项目复制到另一台机器上,就会报“java compiler level does not match the version of the installed java project facet”错误呢?
如图所示:
其实要解决也很简单,在资源管理器下,找到项目所在的目录,在.settings子目录里面,用文本编辑器打开org.eclipse.wst.common.project.facet.core.xml配置文件,如图所示:
修改红色画线部分,让它与项目的编译器版本设置保持一致即可。
要查看项目的编译器版本设置,在Eclipse环境中,鼠标右键选择项目,点击Properties,选择Java Compiler,可以在窗口右边看到编译器版本,如图所示:
3)maven项目中JRE System Library Problem J2SE-1.5问题
(1)问题:
我们创建的maven web项目,jre system library 使用的是j2se-1.5,如何更改为我们自己安装的jdk?
(2)原因:
maven是项目管理工具,默认使用J2SE-1.5的库管理项目(我的是1.5,也可能是其他版本),用maven-compiler-plugin插件,就是为了告诉maven使用什么版本的库来管理项目。
(3)解决办法:
第1种
.在pom文件中加入以下代码
- <build>
- <plugins>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-compiler-plugin</artifactId>
- <configuration>
- <source>1.8</source>
- <target>1.8</target>
- </configuration>
- </plugin>
- </plugins>
- lt;/build>
如下图
第2种
修改settings.xml ,在<profiles>标签内添加如下配置:
- <profile>
- <id>jdk-1.8</id>
- <activation>
- <activeByDefault>true</activeByDefault>
- <jdk>1.8</jdk>
- </activation>
- <properties>
- <maven.compiler.source>1.8</maven.compiler.source>
- <maven.compiler.target>1.8</maven.compiler.target>
- <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
- </properties>
- </profile>
(4)
更新项目(或者重启eclipse使setting设置生效)