Hudson java.home 设定

本文记录了在使用Hudson进行持续集成时遇到的问题及解决过程。主要问题为Hudson无法正确识别Java环境,导致构建失败。通过调整Hudson中的Java环境配置解决了该问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在学习使用Hudson进行持续集成时,总是报这样的错误:

can't open C:\Program Files\Java\jdk1.5.0\lib\tzmappings.

 

Started by user anonymous
Updating svn://127.0.0.1/test/quickstart/trunk
At revision 886
no change for svn://127.0.0.1/test/quickstart/trunk since the previous build
Parsing POMs
[trunk] $ java -cp "C:\Documents and Settings\QGD\.hudson\plugins\maven-plugin\WEB-INF\lib\maven-agent-1.372.jar;E:\Program Files\Apache Software Foundation\apache-maven-2.2.1\boot\classworlds-1.1.jar" hudson.maven.agent.Main "E:\Program Files\Apache Software Foundation\apache-maven-2.2.1" "C:\Documents and Settings\QGD\.hudson\war\WEB-INF\lib\remoting-1.372.jar" "C:\Documents and Settings\QGD\.hudson\plugins\maven-plugin\WEB-INF\lib\maven-interceptor-1.372.jar" 1198 "C:\Documents and Settings\QGD\.hudson\plugins\maven-plugin\WEB-INF\lib\maven2.1-interceptor-1.2.jar"
<===[HUDSON REMOTING CAPACITY]===>���channel started
Executing Maven:  -B -f C:\Documents and Settings\QGD\.hudson\jobs\A test project\workspace\trunk\pom.xml clean test
ZoneInfo: C:\Program Files\Java\jdk1.5.0\lib\zi\ZoneInfoMappings (系统找不到指定的路径。)
ZoneInfo: C:\Program Files\Java\jdk1.5.0\lib\zi\ZoneInfoMappings (系统找不到指定的路径。)
ZoneInfo: C:\Program Files\Java\jdk1.5.0\lib\zi\ZoneInfoMappings (系统找不到指定的路径。)
[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] Building quickstart
[INFO]    task-segment: [clean, test]
[INFO] ------------------------------------------------------------------------
[INFO] [clean:clean {execution: default-clean}]
[INFO] Deleting directory C:\Documents and Settings\QGD\.hudson\jobs\A test project\workspace\trunk\target
[INFO] [resources:resources {execution: default-resources}]
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 1 resource
[INFO] [compiler:compile {execution: default-compile}]
[INFO] Compiling 1 source file to C:\Documents and Settings\QGD\.hudson\jobs\A test project\workspace\trunk\target\classes
[HUDSON] Archiving C:\Documents and Settings\QGD\.hudson\jobs\A test project\workspace\trunk\pom.xml to C:\Documents and Settings\QGD\.hudson\jobs\A test project\modules\cn.ac.ceode.xtwh$quickstart\builds\2010-08-18_19-56-56\archive\cn.ac.ceode.xtwh\quickstart\0.0.1-SNAPSHOT\pom.xml
[INFO] ------------------------------------------------------------------------
[ERROR] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Compilation failure
Unable to locate the Javac Compiler in:
  C:\Program Files\Java\jdk1.5.0\..\lib\tools.jar
Please ensure you are using JDK 1.4 or above and
not a JRE (the com.sun.tools.javac.Main class is required).
In most cases you can change the location of your Java
installation by setting the JAVA_HOME environment variable.

[INFO] ------------------------------------------------------------------------
[INFO] For more information, run Maven with the -e switch
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2 seconds
[INFO] Finished at: Wed Aug 18 11:57:02 GMT 2010
[INFO] Final Memory: 8M/14M
[INFO] ------------------------------------------------------------------------
channel stopped
can't open C:\Program Files\Java\jdk1.5.0\lib\tzmappings.
Finished: FAILURE

 

 

尽管我设定了JAVA_HOME变量的值,但是每次Hudson显示的系统只java.home 都是 C:\Program Files\Java\jre6\

 

不得已在Hudson的 Global properties  -> Environment variables 种手动添加了java.home 为 C:\Program Files\Java\jdk1.6.0_13。但是类似的错误仍在继续。

 

正在一筹莫展时,发现Maven的java home 也不是JAVA_HOME的,而是其下的jre文件夹: Java home: C:\Program Files\Java\jdk1.6.0_13\jre

 

照这个值将Hudson的 java.home改为 C:\Program Files\Java\jdk1.6.0_13\jre,即可

 

上网查了一下,没找到他们之间的详细区别,以后再碰到时再探究原因吧

用户的测试机安装的win7,本人用的是 WEBLOGIC8.1 JDK1.4的。 测试时发现时间总是差8个小时,郁闷死。 立马想到时区不对,查看控制面板里时区设置(顺便BS一下win7,控制面板就不能学xp有个经典模式吗?郁闷死),发现时区设置正确,看来不是时区设置问题。 在win7下装JDK1.4和JDK1.5、eclipse,输出系统时区和时间。 果然,输出时区为"GMT",时间差8小时。那就说明是jdk1.5在win7下取不到正确的时区。 什么原因呢,为了验证我的假设,又下了最新的jdk1.6,后台打印输出正常。 问题找到了,接下来就要解决。为什么xp下能取到时区儿而win7下取不到呢? 搜索一下,到SUN论坛,发现SUN提到了这个bug,(http://java.sun.com/javase/tzupdater_README.html)而且发布了一个tzupdater。 按照使用说明下载、运行,再试,还是不行。 虽然用updater没有成功,但通过他的使用说明还是发现了一些东东。在/jdk1.5.0_04/jre/lib目录下有个tzmappings文件。 用记事本打开,里面记录了所有地区的时区,格式为“China Standard Time:-1,75::Asia/Shanghai:”,看到它,很自然的联想到注册表。 于是,打开注册表时区的节点[HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows NT/CurrentVersion/Time Zones/China Standard Time]。 有一个键值似曾相识,“MapID=-1,75”,这不就是tzmappings文件中记录的那个值吗。 会不会Java是通过这个键值获取的时区?展开win7下注册表相同的节点,我靠,里面竟然没有MapID键, 与xp对比了一下,少了MapID、Index键,多了MUI_Display、MUI_Dlt、MUI_Std啥的, 其他的不管,先把MapID键加上再说。加上后,再运行我那个取系统时间的测试程序,OK!问题解决! 本同目录下有两个注册表。一个是中国的 。一个是时区全的。那个都行。 其实本人也是参考优快云部分帖子,再有疑问联系,优快云:lawsystem 感谢 优快云 无名贡献者。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值