Jbuilder2006带来的麻烦事(JDK 版本问题)

Jbuilder2006自带的jdk版本是1.5的, 公司服务器上的jdk是1.4的版本, 以前的程序都是基于1.4版本开发的, 由此就产生了一些jdk版本冲突的问题(俺们的程序都是在自己的机器上写好程序, 测试通过之后, 再提交到cvs, 服务器再从cvs上update下来编译)。

由于服务器使用的是1.4的jdk, 所以我在本机上也装了个1.4的jdk,  每次新建工程, 我都把jbuilder相关的环境改成jdk1.4, 使用1.4的jvm, 这样开发一般的application也没有出现什么问题, 代码提交到服务器上也能顺利编译。 但是最近有一个应用需要使用tomcat, 在建立webModule的时候, 我选择4.1 的tomcat, 然后编写servlet程序, 但是很奇怪, 我发现jbuilder把我这个工程的属性改了, jdk变成1.5了, 马上改回1.4的, 然后在jbuilder上编译测试, 没有问题, 部署到本机的tomcat( 4.1)上测试,也通过, 于是就部署到服务器上, 并且把代码提交到cvs,然后再服务器上把ant的编译脚本加上,暂时没有问题。

后来发现程序有点小问题, 修改了一个文件(不是servlet), 然后提交, 在服务器上把代码update下来之后, 用ant编译, 出现以下问题:

compile:
    [javac] Compiling 11 source files to /... .../WEB-INF/classes
    [javac] /... .../myJavaFile.java:17: cannot access java.lang.Object
    [javac] bad class file: /home/j2sdk1.4.1_01/jre/lib/rt.jar(java/lang/Object.class)
    [javac] class file has wrong version 48.0, should be 47.0
    [javac] Please remove or make sure it appears in the correct subdirectory of the classpath.
    [javac]     private String str = null;
    [javac]             ^
    [javac] 1 error

BUILD FAILED
/... .../build.xml:72: Compile failed; see the compiler error output for details.

把工程部署到本机的tomcat上,服务可以起来, 于是在浏览器上输入servlet的url测试, 出现以下错误:

java.lang.UnsupportedClassVersionError: com.... .../MyJavaFile (Unsupported major.minor version 48.0)
at java.lang.ClassLoader.defineClass0(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:539)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:123)

郁闷,google去, 找到一个:

(原文转自 http://www.360doc.com/showWeb/0/0/31881.aspx )

1.java.lang.UnsupportedClassVersionError: com/mdcchina/userinfo/logic/UserManager (Unsupported major.minor version 49.0)提示如上的错误,很是郁闷
经过研究和比较在两个不同环境下的编译运行,终于发现这个主要是由于我的机子上安装了两个不 同版本的JDK导致的,我想很多的朋友在尝试新的JDK的时候,可能不会删除1.4的版本,但是要注意的是要将JAVA_HOME, CLASS_PATH,PATH等等的环境变量都修改成相关的JDK1.5的目录下面去,因为1.5相对于以前的版本的变化比较大.
2.上面的问题排除后,在运行TOMCAT5.0时候由出现了如下的错误:
2005-11-17 19:38:47 StandardWrapperValve[action]: Servlet.service() for servlet action threw exception
org.apache.jasper.JasperException: Unable to compile class for JSP

Generated servlet error:
C:/application/Tomcat 5.0/work/Catalina/localhost/mlinkweb/org/apache/jsp/layouts/layout_005findex_jsp.java:7: cannot access java.lang.Object


Generated servlet error:
bad class file: C:/application/Java/jdk1.5.0/jre/lib/rt.jar(java/lang/Object.class)
class file has wrong version 49.0, should be 48.0
Please remove or make sure it appears in the correct subdirectory of the classpath.
public final class layout_005findex_jsp extends org.apache.jasper.runtime.HttpJspBase
             ^
1 error

这个问题这是让我郁闷之极啊(^_^)
最后在SUN的JAVA论坛里面找到了答案,只要将JDK1.5的LIB下面的TOOLS.JAR覆盖TOMCAT5.0目录/common/lib下面的tools.jar,然后重启TOMCAT5.0就可以了

这 位老兄的问题和我有点类似,不过他的是是在1.4下升到1.5的时候出的问题, 可是我本意是在1.4下开发, 1.4下运行, 无奈我机器上有两个版本的jdk,  不知道怎么的给混到1.5 的版本上了(俺想学习一下1.5 的特性, 不想删除), 而且我的服务器是1.4的,这个我也不能更改, 真是郁闷, 我试过重新新建工程, 然后把代码copy过去, 编译出来的class放到服务器上可以运行, 可是代码还是不能在服务器上编译,而且我的代码也没有使用过1.5的特性, 真不明白是怎么回事, 让俺五一好生郁闷。


 

【来源】

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值