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
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
主要解决win7下运行jbuilder的不兼容,有拖影的问题。我看好多人写着要替换jdk,实际上完全用不着那么麻烦。详情请看说明 虽然现在流行Eclipse,不过还是很多人习惯Jbuilder的,今天总算是解决了在Vista下使用的问题了。 1.首先,Jbuilder 2006 在Vista下是无法安装的。 还好,Jbuilder 2006够绿色,在虚拟机中的XP下安装后,把文件复制到Vista下能够直接运行。 可是一运行,首先是Aero没了,这都还可以忍,可是拖动时写的代码会出现错位问题,基本没法正常使用了。 2.想到Jbuilder是Java的Swing开发的,应该和系统不应该有太大关系,而且新的JDK1.5.0U14是可以完美兼容Vista的,所以用安装后的JDK1.5.0U14,替换了Jbuilder中自带的JDK1.5.0U03,毕竟都是JDK1.5,应该差别不大,大部分都是一些兼容性性能安全性更新而已吧。 再次运行,可以和Aero兼容了,代码也不会错位了,写了点简单的东西运行下,很正常。 可是做Swing时,Design模式预览有时候可以,有时候又无法显示。 3.继续:在命令行下启动Jbuilder 2006,呵呵,如果出现异常都会在命令行下显示,观察弄Swing时出现的异常,如图1: 晓得哪里出的问题就好办了,然后找到JDK中内置的那些包所在文件:Borland\JBuilder2006\jdk1.5\jre\lib\rt.jar,用WinRAR解开。 然后找到rt.jar\javax\swing\plaf\basic,删除Basic下的所有文件,用Winrar打开Jbuilder原来的JDK中的rt.jar,找到并把Basic目录里面的文件解到刚才的basic目录中。然后用Winrar采用ZIP格式把刚才解出来替换好的文件重新打包并命名为rt.jar替换以前的rt.jar. OK! 虽然有点东拼西凑,不过目前正常使用中!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值