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

来源:互联网 发布:mysql 冷备 编辑:程序博客网 时间:2024/05/01 06:09

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的特性, 真不明白是怎么回事, 让俺五一好生郁闷。


 

【来源】

 
原创粉丝点击