一个J2EE的web项目,正式投产环境是weblogic,开发环境是tomcat
但是实际用的过程发现了一些问题,记录下如何解决这些“奇怪问题”的。
1. 使用run as 居然没有Run as server可以选,通过server 添加resource也提示没有可用资源。
解决: 因为项目是从版本库导入的,eclipse识别不了该项目是web项目,故有上面的问题。
选中项目 --右键属性 --选择 project facets --选中 Dynamic Web Module ,确认后eclipse就知道这个web项目了。
2. run as 对应的项目,选中的tomcat是启动了,但是没有deploy的过程,即使点击server里的publish也没用。
解决: 其实eclipse有执行deploy(部署)的操作,但是没有人告诉它,部署的规则。
选中项目--右键属性 --选择Deployment Assembly --可以看到部署的对应结构。
* 有时候项目属性根本没有这个项,怎么办?
解决:修改项目的 .project 配置文件 在<natures>下增加
<nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature>
3 如果选中Dynamic web project 选择不能确定,或
tomcat x.x does not support version 2.5 of J2EE specification.....异常,
排除Dynamic web Module于某些项不能同时选择的异常.
解决方式是
打开项目根目录下的.settings在有个名为org.eclipse.wst.common.project.facet.core.xml的文件,里面配置有各种版本信息。此时,按照通常按照如下修改.
在<faceted-project>标签下修改为
<fixed facet="wst.jsdt.web"/>
<fixed facet="jst.web"/>
<fixed facet="java"/>
<installed facet="java" version="1.6"/>
<installed facet="jst.web" version="2.5"/>
<installed facet="wst.jsdt.web" version="1.0"/>
重启eclipse,重新在项目下点击左键选择项目属性 选择Project facets 选中Dynamic web project ,java,javascript.应该就可以了
4. 编译没有问题,每次运行出现一些奇怪的问题,例如一些jndi的问题:Name java: is not bound in this Context 之类的。
解决: 网上有些解释是tomcat的包冲突,在检查了几个包后,把项目依赖的几个包放到jre runtime资源里
例如serlvet-api.jar jsp-api.jar等,这样编译也不会报错,运行也没有出现jndi问题。
5. Tomcat5.5的一些问题:
JDBC不支持 getJDBCMajorVersion等方法。 替换/common/lib/classes12.jar 为 ojbc14.jar
jasperexception type mismatch cannot convert double to Double 之类的。
网上解释是,因为jdk1.5之前没有autoboxing 特性,但是检查好几遍了jdk版本都是1.6了
最后通过替换 jasper的jar包解决问题。
中间替换后运行时又提示 not found org/apache/juli/logging/logfactory 又替换/bin/tomcat-juli-jar 包解决。