2007年6月1日星期五

Resin:JDK版本问题

最初将Resin注册为Windows服务时,JDK版本是1.4.2,一直运行正常。

后来装了JavaEE SDK 1.5,发现Resin运行JSP程序时,总是出现"com/sun/tools/javac/Main (Unsupported major.minor version 49.0)"错误信息,甚至resin-doc(.xtp)都无法正常编译运行。上网一查,了解到是版本问题。

我遇到的问题与Resin无法启动类似,但是我用了不同的方法解决。

很简单,不需要任何重装(当然,注册Resin为Windows服务例外)。

1. 在path中设置好需要的JDK版本。
2. 进入命令行模式,cd到Resin安装目录。
3. 运行如下命令,将Resin Web Server从Windows服务中去除。
> httpd -remove
如果运行正常,继续。
(注:不同的resin版本,httpd可运行程序可能会在不同的子目录。我用的是resin3.0.17 for Windows)
4. 然后运行下面的命令再将Resin注册为Windows服务。
> httpd -install
5. ok。

至于原因,Resin官方网说得很清楚:
If you have moved JDK or Resin manually, you get the error from Resin
because the data Resin once get from the registry and the real location
of the executables doesn't match. Reinstall jdk and, then, reinstall
Resin. That will solve this problem.

事后我有研究了一下注册表,在 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Resin] 中有一个名为"ImagePath"的"可扩充字符串值",值中有一个参数"-java_home "D:\jdk1.5.0""就是设置Resin使用的JDK路径的。( 注意可扩充字符串值导出的并不是字符串,而是十六进制数据,所以导入注册表时需要注意。)

没有评论:

发表评论