一.Q&A
1. 如果需要引用的jar包在repository中找不到怎么办?
答:比如ms sql的jdbc,在官方的repository中是找不到的。这时可以在将这些jar下载下来,加入内网用来做mirror的nexus的第三方组件库中(third party)。在nexus页面中repository->third part->upload artifact中。上传到第三方组件库时注意Classifier的填写,这个是将加在你上传的Jar包的名字当中,作为和其他同名组件的一个区分,以便于maven能找到在哪里下载它。比如ojdbc14,在官方repository中只提供了一个pom而没有jar,这时可以将ojdbc14上传到第三方组件库中,指定classifier为local,这样在dependcy中,加上
2. 如果Eclipse的Libraries中出现如下图所示错误怎么办?
答:这是因为工程用到的dependcy中有 struts2-core,它依赖于tools.jar,于是在libraries中自动添加了tools.jar的依赖。如果添加struts-core时,缺乏一些环境配置,eclipse就会自动到eclipse工作的jre中找tools.jar,出现tools.jar找不到的错误(提示Missing artifact com.sun:tools:jar:1.5.0:system的错误,同时libraries中显示tools.jar missing)。
要解决这个问题,
(1).首先确保lib中使用的的时jdk而不是jre,要注释掉对于struts2-core的引用,
(2)一种方法是,在eclipse.ini中增加-vm "
(3)或者另一种方法,在path中增加
(4)启动eclipse
(5)取消struts2-core引用的注释,保存
即可消除错误。之所以要先注释掉struts2-core的引用,是因为tools.jar是在加入struts2-core的引用时,eclipse根据当时环境变量的设置产生寻找tools.jar的目录的。只有再次加入struts2-core,eclipse才会根据当前的环境再次寻找tools.jar的目录,消除问题。
3. 使用maven编译时出现错误提示 –source 1.3不支持annotation或是泛型等,至少需要-source1.5(错误提示内容是中文意译,原文为英文),怎么办?
答:在pom.xml中加入<plugin>
<artifactId>maven-compiler-pluginartifactId>
<version>2.0.2version>
plugin>
注意红色标识的地方,如果不加入此段定义,maven将会根据maven基类的POM生产此段定义,可在eclipse中的Effictive Pom中,看到maven根据基类的POM生产的实际运行时的POM, 关于此段的定义是
<plugin>
<artifactId>maven-compiler-pluginartifactId>
<version>2.0.2version>
plugin>
而默认的source是1.3,不能识别annotation和泛型等。要想改变,就要在项目的POM中定义maven-compiler-plugin,来复写基类中的POM里的定义。
4. 出现错误提示Missing artifact com.sun:tools:jar:1.5.0:system怎么办?
答:同问题2.
5. 项目Classpath环境中多出意想不到的jar包怎么办?
答:因为你Dependency的某些artifact会引用某些包,将会自动将它引用的jar包加入你的classpath,有时候这回引起你的程序的冲突,比如说它引用的jar包你的工程也需要,但版本更高,这时它加入的jar包将会引起你程序的BUG。这时需要在pom里定义dependency的时候用
6. Hudson的简单安装配置指南
答:参考http://sinye.iteye.com/blog/572153
7. 如何设置hudson工作目录?
答:在hudson的web工程中,web.xml中的HUDSON_HOME中定义本地的工作路径,然后重新启动tomcat,工作路径就被更改了。
8. 为什么hudson的插件上传后没有任何显示?
答:需要 重新启动tomcat,插件才会生效。另外,插件必须要是.hpi后缀,有时下载下来会是.zip后缀,需要手工改为.hpi
9. hudson自动部署如何配置?
答:hudson的自动部署需要增加插件,可以从以下url下载自动部署的插件https://hudson.dev.java.net/files/documents/2402/106347/deploy.hpi 另外,自动部署的配置需要注意war/ear file的路径配置中,可以选择相对路径,相对路径是从{hudson home}/jobs/{task name}/workspace开始的。此外,必须要提供tomcat的管理密码。
10. 为什么自动部署第一次能成功,但下次再部署时,tomcat的webapps的工程就只剩一个空壳,无法再用url访问部署的工程?
答:这是因为再次部署前,undepoy工程时,因为jar包被locking,未能将工程卸载干净,遗留了工程的空壳和部分jar包,再次部署时,实际上未能部署成功。要解决此问题,关键在于要解除jar包的锁定,让工程能卸载干净。可参考文章http://wiki.apache.org/tomcat/FAQ/Windows#Q5 。对于tomcat5.5,可以在conf下的context.xml加入
需要注意的是,因为加上antiResourceLocking=”true”,Tomcat在重新部署工程时,因为第三方的jar包很多,会出现Tomcat当机的状况,查看日志,出现permgen space java.lang.OutOfMemery,这种错误常见在web服务器对JSP进行pre compile的时候。如果你的WEB APP下都用了大量的第三方jar, 其大小超过了jvm默认的大小(4M)那么就会产生此错误信息了。
参考http://blog.csdn.net/fenglibing/archive/2007/11/21/1896008.aspx
http://dev.firnow.com/course/3_program/java/javajs/20100719/454803.html
解决方法可在启动参数中设置-Xms256m -Xmx512m -XX:MaxNewSize=256m -XX:MaxPermSize=256m 。
如使用服务方式,在Configure Tomcat-》JAVA-》JAVA OPTIONS中的参数设置是:
-Xms500m
-Xmx1024m
-XX:PermSize=64M
-XX:MaxPermSize=256m
-XX:ReservedCodeCacheSize=48m
-Duser.timezone=GMT+08
11. 如何让单元测试的事务能回滚
答:在你的单元测试继承了org.springframework.test.AbstractTransactionalDataSourceSpringContextTests类后,在上下文中申明<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
bean> 即可自动在测试方法前开始事务,在方法后回滚事务。
12. 如何让Maven支持字符集为UTF-8的源码编译
答:要在Compiler插件中申明encoding为utf-8, <plugin>
<artifactId>maven-compiler-pluginartifactId>
<version>2.0.2version>
<configuration>
<source>1.5source>
<target>1.5target>
<encoding>UTF-8encoding>
configuration>
plugin>
,同时,在Properties中也要申明sourceEncoding为utf-8,<project.build.sourceEncoding>UTF-8project.build.sourceEncoding>
13. 如何使用Hudson Visual SourceSafe Plug-in
答:1.安装Visual SourceSafe Plug-in插件
2.配置中Visual Source Safe
Server Path输入:\\serverpath\srcsafe.ini,即访问srcsafe.ini的网络路径,注意要带上srcsafe.ini
3.user name和 password为vss控制的用户名和密码
4.vss folder path是vss控制器中你需要checkout你的代码的路径,表示例如$/SpeedSupervise.root/SpeedSupervise
5.勾选keep the file as writeable和Fetch the files in recursive order。
以上都是在Visual SourceSafe Plug-in的使用说明中可以看到的。
重点在于如何配置访问srcsafe.ini所在网络路径的用户名和密码?即访问共享目录的用户和密码?
事实上hudson会以tomcat运行服务时的用户名和密码来访问vss的网络路径。默认tomcat运行服务时是本机用户,这样运行会出现“java.io.IOException: \\10.148.70.215\ebook\SourceCode\ERoadProject\srcsafe.ini doesn't exist. Configuration error?
”的错误。
解决方法:在本机上配置与访问vss网络路径一样的用户名和密码,并以此用户和密码来启动tomcat服务即可。