java compliance_java complier compliance level问题引发的思考

http://blog.csdn.net/shan9liang/article/details/17266519

**********************************************

问题起源:

今天再在ESB调用WebService测试,需要在jboss上部署一个ejb项目(ejb发布的webservice),过去部署好好的代码,这次再部署上去竟然报错了,log记录的错误如下:

[org.jboss.detailed.classloader.ClassLoaderManager] (HDScanner) Unexpected error during load of:com.jialin.ejb.UserManagerBean

java.lang.UnsupportedClassVersionError: com/jialin/ejb/UserManagerBean : Unsupported major.minor version 51.0

…………

…………

2013-12-11 14:48:34,329 ERROR

[org.jboss.kernel.plugins.dependency.AbstractKernelController]

(HDScanner) Error installing to PostClassLoader:

name=vfszip:/F:/jboss-5.1.0.GA/server/default/deploy/ejb_webservice1.jar/

state=ClassLoader mode=Manual requiredState=PostClassLoader

org.jboss.deployers.spi.DeploymentException: Cannot process metadata

…………

…………

开始寻找解决方案:

环境:

jdk 1.6;

jboss 5.1.0.GA

eclipse 4.2

c227b51cb683ebec9a372f7e6f7633ad.png

这里可以配置的jdk,还有个java compiler中可以配置compiler level(如图中红色框)。这两个东西就是这个问题的关键。

在eclipse中进行开发的时候,build path 中JDK进行类库的编译(就是你使用类在不在这个JDK中),java

compiler compliance level是对这个项目语法的编译(就是你的项目中语法的正确与否),也可以把java compiler

compliance level中配置的编译版本号的作用看作是你这个项目将来开发完毕之后,要放到服务器上运行,那个服务器上JDK的运行版本。

而我的问题就出在build path中配置1.6的JDK,java compiler compliance level中配置的1.7(因为以前我用过一段时间1.7)

c08d9dec627fabdfe35a44c500e75c6d.png

而在jboss服务器上是1.6的JDK,就报了那个错误,说是编译所用的jdk(1.7)比运行所用的jdk(1.6)高了,这是错误的。

放在其他人机器上之所以不报错,是因为他的jboss使用的jdk恰恰是1.7。这个版本是向下兼容的。

再拿个被人举过的例子,如果JDK1.4不能使用泛型。而java compiler compliance

level设置的是你写好的JAVA代码按照什么JDK版本级别编译,例如:设置的是1.4,编译出来的class文件可以在1.4以上的JRE上运行,如果用的是5.0级别编译,就不能运行在1.4的环境里面,会提示版本过高。

总结:

1、在开发和部署过程中,最安全的做法,是build path , java complier compliance level,jboss服务器配置的JDK都保持一致,就不会出现任何问题的。

2、我们常常关注build path中jdk的版本和jboss中jdk版本,殊不知他们是通过 java complier compliance level联系起来的。

有时候我们并不能仅仅按照网上的解决步骤把问题解决了就算万事大吉了。我不得不承认这是解决问题的捷径,但从捷径走过后,我们应分析和总结问题的来龙去脉,真正理解它的本质,才算是一种积累,因为网上的解决方案永远是针对过时的技术,新技术暴露的问题依然会让你手足无措,但幸好技术的本质是不容易改变的,所以说,抓住本质,才是常胜之道。

不知道从什么时候开始,已经不再满足于解决问题就好,呵呵。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/460259.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Codeforces Round #301 (Div. 2) C. Ice Cave BFS

C. Ice Cave Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/540/problem/CDescription You play a computer game. Your character stands on some level of a multilevel ice cave. In order to move on forward, you need to descend one…

字符串匹配的KMP算法(转)

转自:http://www.ruanyifeng.com/blog/2013/05/Knuth%E2%80%93Morris%E2%80%93Pratt_algorithm.html 字符串匹配是计算机的基本任务之一。 举例来说,有一个字符串"BBC ABCDAB ABCDABCDABDE",我想知道,里面是否包含另一个…

java游戏运行环境_Java运行环境

一、计算机存储单元位(bit): 一个数字0或者一个数字1,代表一位字节(Byte): 每逢8位是一个字节,计算机中数据存储的最小的单位1 Byte 8bit通常的换算单位:1KB1024B1MB1024KB1GB1024MB...二、java语言的跨平台性JVM: java虚拟机&…

logcat使用

做android有些日子了,只是对主要的logcat的具体使用方法还是非常模糊,今天有空,学习一下。 logcat能够在adb中使用,也能够直接在命令行下使用。 logcat [options] [filterspecs] logcat的选项包含: -s 默认…

BNUOJ 1207 滑雪

滑雪 Time Limit: 1000msMemory Limit: 65536KBThis problem will be judged on PKU. Original ID: 108864-bit integer IO format: %lld Java class name: MainMichael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激。可是为了获得速度,滑的区域必须向…

eclipse的java帮助文档_java在Eclipse中文apidoc帮助文档导入.doc

今天一下午都在整java的api。我的目标是在eclipse平台中用鼠标点击java的api就会自动显示出中文的注释。并且能在help中方便地搜索java的api。 这其实是使用bada开发平台后留下的后遗症。最终结果是没有得到满意答案,发现最方便的方法还是另外开一个chm中文api文档。…

1477: 青蛙的约会

1477: 青蛙的约会 Time Limit: 2 Sec Memory Limit: 64 MBSubmit: 261 Solved: 164[Submit][Status][Discuss]Description 两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面。它们很高兴地发现它们住在同一条纬度线上,于是它们…

altium designer 自动扇出功能

http://wenku.baidu.com/link?urlUJLUQWqm2KwzQzcWxhgsL-Xk4wcUBl-TIB0GAWVD9lC2jrDiRHin0cln-4fMiK1Ku934CvlB-tV7FGEcXzfQL6uC4M58TpnZYCPlbfA4XgW转载于:https://www.cnblogs.com/asulove/p/3836247.html

elasticsearch java_java Elasticsearch详细介绍及使用实例分析

集群健康检查取得健康状态GET /_cat/health?v返回:epoch timestamp cluster status node.total node.data shards pri relo init unassign pending_tasks max_task_wait_time active_shards_percent1535248805 10:00:05 elasticsearch yellow 1 1 1 1 0 0 1 0 - 50…

zabbix2.2入门教程之编译安装(一)

zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供柔软的通知机制以让系统管理员快速定位/解决存在的各种问题。测试环境:centos6.4zabbix2.2…

数学图形(1.35)Kappa curve

不知道这个曲线和那个运动品牌背靠背有什么关系.阿迪原先的商标是个三叶草,难道背靠背也是由数学图形来的? 以下是维基上的解释. In geometry, the kappa curve or Gutschovens curve is a two-dimensional algebraic curve resembling the Greek letter ϰ (kappa). The kapp…

MeasureSpec学习 - 转

2019独角兽企业重金招聘Python工程师标准>>> 在自定义View和ViewGroup的时候,我们经常会遇到int型的 MeasureSpec 来表示一个组件的大小,这个变量里面不仅有组件的尺寸大小,还有大小的模式。 这个大小的模式,有点难以理…

ffmpeg 截图 java_Java Web 中使用ffmpeg实现视频转码、视频截图

视频网站中提供的在线视频播放功能,播放的都是FLV格式的文件,它是Flash动画文件,可通过Flash制作的播放器来播放该文件.项目中用制作的player.swf播放器.多媒体视频处理工具FFmpeg有非常强大的功能包括视频采集功能、视频格式转换、视频抓图、给视频加水印等。ffmpeg视频采集功…

Modernizr使用指南

很久很久以前,我们总有要自己写代码检测,浏览器对某种特性的支持情况。比如:现在要写代码判断浏览器是否支持canvans,大致的代码如下: window.onload function () {if (isSupportCanvas()) {alert("support canv…

C#反射基础理解1(转)

反射提供了封装程序集、模块和类型的对象(Type类型) 可以使用反射动态的创建类型的实例,将类型绑定到现有对象,或从现有对象中获取类型,然后,可以调用类型的方法或访问其字段和属性 。 总之,有了…

java sql超过32k_db2 clob类型如何能存储大于32k的字符串

#include #include int ascii[256]; // 字符出现次数,一共只有256个ascii码int main(){int i,r,j;char str[1024];printf("输入字符串\n");for (i 0; i < 256; i )ascii[i] 0; // 清零scanf("%s",str);r strlen(str);for (i 0; i < r; i ){ascii…

架​设​W​e​b​服​务​器

服务器是网站的灵魂&#xff0c;是打开网站的必要载体。按照体系架构来区分&#xff0c;服务器主要分为非X86服务器、x86服务器。非X86服务器使用RISC(精简指令集)或EPIC&#xff08;并行指令代码&#xff09;处理器&#xff1b;X86服务器又称CISC&#xff08;复杂指令&#xf…

在Linux和Mac OS X系统上运行.NET

.NET Core运行时已经看到了实现真正的跨平台的美好前景&#xff0c;它最终出现在Linux和Mac OS X平台上。在上周举办的Microsoft Build大会上&#xff0c;来自微软的项目经理Habib Heydarian为听众分析了这一举措对开发者们所带来的益处&#xff0c;并告诉开发者们如何开始探索…

java 不可修改的map_Java中如何实现不可变Map详解

前言有时最好不允许修改 java.util.Map&#xff0c; 例如跨线程共享只读数据。为此&#xff0c;我们可以使用Unmodifiable Map或Immutable Map。在这个快速教程中&#xff0c;我们将看到它们之间的区别。然后&#xff0c;我们将介绍可以创建不可变Map的各种方法。下面话不多说…

《.NET最佳实践》与Ext JS/Touch的团队开发

概述持续集成编码规范测试小结概述 有不少开发人员都问过我&#xff0c;Ext JS/Touch是否支持团队开发&#xff1f;对于这个问题&#xff0c;我可以毫不犹豫的回答&#xff1a;支持。原因是在Sencha官网博客中客户示例中&#xff0c;有不少项目都是基于团队模式开发的。 那为什…