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",我想知道,里面是否包含另一个…

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喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激。可是为了获得速度,滑的区域必须向…

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 来表示一个组件的大小,这个变量里面不仅有组件的尺寸大小,还有大小的模式。 这个大小的模式,有点难以理…

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…

Cocos2d-x 3.2 学习笔记(四)学习打包Android平台APK!

从cocos2dx 3.2项目打包成apk安卓应用文件&#xff0c;搭建安卓环境的步骤有点繁琐&#xff0c;但搭建一次之后&#xff0c;以后就会非常快捷&#xff01; &#xff08;涉及到3.1.1版本的&#xff0c;请自动对应3.2版本&#xff0c;3.x版本的环境搭建都是一样的&#xff09; 一…

java微信web支付开发_微信支付java开发详细第三方支付功能开发之支付宝web端支...

这段时间把支付基本搞完了&#xff0c;因为做的过程中遇到许多问题&#xff0c;特地记录下来&#xff0c;同时方便其他java coder&#xff0c;废话少说&#xff0c;下面开始。整体思路&#xff1a;在后台&#xff0c;根据参数创建支付宝客户端AlipayClient&#xff0c;发送参数…

mysql 最值复杂查询_MySQL高级查询

我们使用SQL查询不能只使用很简单、最基础的SELECT语句查询。如果想从多个表查询比较复杂的信息&#xff0c;就会使用高级查询实现。常见的高级查询包括多表连接查询、内连接查询、外连接查询与组合查询等&#xff0c;今天我们先来学习最常用、面试也很容易被问到的连接查询。我…

java对象和json对象之间互相转换

2019独角兽企业重金招聘Python工程师标准>>> import java.util.ArrayList;import java.util.Collection;import java.util.Iterator;import java.util.List;import net.sf.json.JSONArray;import net.sf.json.JSONObject;public class MainClass { public static…

SQL Server :理解数据记录结构

原文:SQL Server &#xff1a;理解数据记录结构在SQL Server &#xff1a;理解数据页结构我们提到每条记录都有7 bytes的系统行开销&#xff0c;那这个7 bytes行开销到底是一个什么样的结构&#xff0c;我们一起来看下。 数据记录存储我们具体的数据&#xff0c;换句话说&#…

京东云擎提供了免费的wordpress一键安装功能了

1. 京东云擎(http://jae.jd.com)提供了免费的个人博客WordPress一键安装功能了&#xff0c;如下图&#xff0c;给开发者分享福利&#xff01; 免费的应用&#xff0c;提供了源码&#xff0c;提供了数据库&#xff1a; 我之前把文章发到首页&#xff0c;遭到了封杀&#xff01;本…

Distinct源码分析

以前比较两个List数据&#xff0c;筛选出所需要的数据时候&#xff0c;一直套两层for循环来执行。用到去重(Distinct)的时候&#xff0c;这两个需求其实都是一样的&#xff0c;都是需要比较两个集合&#xff0c;查看了下它的源码&#xff0c;里面确实有值得借鉴的地方。 先附上…

java语言 编译原理_【Java学习】深入分析Java的编译原理

在《Java代码的编译与反编译》中&#xff0c;有过关于Java语言的编译和反编译的介绍。我们可以通过javac命令将Java程序的源代码编译成Java字节码&#xff0c;即我们常说的class文件。这是我们通常意义上理解的编译。但是&#xff0c;字节码并不是机器语言&#xff0c;要想让机…

实验 使用 vivado zedboard GPIO 开关 开控制 LED

前面我做了几个实验 都没有用过 开关&#xff0c;这一次用一用 发现 vivado 真的挺方便 所以 使用 vivado 开发 1.建工程 我使用 vivado 2013.4 创建新工程 –》 next –》next 勾选 Do not specify sources at this time //这样跳过后面两个添加文件页面 选择 board –》 ze…

java 最优化_java-多维度求最优解

拿出11条数据//条件每个位置(position)的人数限制每队(team)人数不能超过7人credits的总和在100分之内(包含100)总分(points)最高//位置人数限制position-1 : 1 position-2 : 3-5 position-3 : 1-3 position-4 : 3-5//模拟数据{points credits position team56 9.0 1 t154 9.1 …

必应(Bing)每日图片获取API

必应(Bing)每日图片获取API January 11, 2015 API http://lab.dobyi.com/api/bing.php 介绍 ValueDescriptiontitle标题desc描述url图片地址你们自由发挥……