Java中同版本json.jar包在OpenJDK与OracleJDK环境中异常说明
2016-08-01 00:00
639 查看
转载请注明来源:http://blog.csdn.net/loongshawn/article/details/50593545
但是,将工程部署至线上服务器,线上服务器为OpenJDK,则报异常:
同时,本地我的jdk是OracleJDK
远程服务器上的jdk是OracleJDK
调整后,线上服务器运行正常,本地运行也正常。所以问题就是出在JDK对jar包方法不支持上。
参考资料:How to use the org.json Java library with Java 7
1. 事件
发现一个情况,同一个工程,json-20151123.jar包在OpenJDK中使用有异常,但在OracleJDK环境中调用则没有异常。其中异常如下:java.lang.UnsupportedClassVersionError: org/json/JSONException : Unsupported major.minor version 51.0
2. 详情
如这个版本的json-20151123.jar,在OracleJDK运行正常。<dependency> <groupId>org.json</groupId> <artifactId>json</artifactId> <version>20151123</version> </dependency>
但是,将工程部署至线上服务器,线上服务器为OpenJDK,则报异常:
java.lang.UnsupportedClassVersionError: org/json/JSONException : Unsupported major.minor version 51.0 at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:634) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) at java.net.URLClassLoader.defineClass(URLClassLoader.java:277) at java.net.URLClassLoader.access$000(URLClassLoader.java:73) at java.net.URLClassLoader$1.run(URLClassLoader.java:212) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:205) at java.lang.ClassLoader.loadClass(ClassLoader.java:321) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294) at java.lang.ClassLoader.loadClass(ClassLoader.java:266) at com.autonavi.method.gaokuai.IssueUpload.action1(IssueUpload.java:62) at com.autonavi.task.ScheduledTasks.executeUploadTask(ScheduledTasks.java:56) at sun.reflect.GeneratedMethodAccessor32.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:616) at org.springframework.scheduling.support.ScheduledMethodRunnable.run(ScheduledMethodRunnable.java:65) at org.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:54) at org.springframework.scheduling.concurrent.ReschedulingRunnable.run(ReschedulingRunnable.java:81) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334) at java.util.concurrent.FutureTask.run(FutureTask.java:166) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$101(ScheduledThreadPoolExecutor.java:165) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
同时,本地我的jdk是OracleJDK
java version "1.8.0_65" Java(TM) SE Runtime Environment (build 1.8.0_65-b17) Java HotSpot(TM) 64-Bit Server VM (build 25.65-b01, mixed mode)
远程服务器上的jdk是OracleJDK
java version "1.6.0_22" OpenJDK Runtime Environment (IcedTea6 1.10.4) (rhel-1.41.1.10.4.1.alios6-x86_64) OpenJDK 64-Bit Server VM (build 20.0-b11, mixed mode)
3. 处理
经过排查,应该是1.6.0_22版本OpenJDK JVM对json-20151123.jar中使用的某些方法不支持。需要降低jar包版本,改为:<dependency> <groupId>org.json</groupId> <artifactId>json</artifactId> <version>20140107</version> </dependency>
调整后,线上服务器运行正常,本地运行也正常。所以问题就是出在JDK对jar包方法不支持上。
参考资料:How to use the org.json Java library with Java 7
相关文章推荐
- Java中同版本json.jar包在OpenJDK与OracleJDK环境中异常说明
- ubuntu中将java环境由安装版的openjdk替换为Oracle的jdk
- 使用 "java -jar"命令启动jar包时报不支持的jdk版本异常
- 一个spring3.2的项目 从jdk1.7放到1.8的环境中编译,打开网页异常:spring jar包版本升级经历
- 详细说明JDK环境变量中dt.jar、tools.jar等变量值的作用(结合ClassLoader)
- java 用path与classpath在命令行下指定一个运行环境(多个JDK版本中指定一个)
- ubuntu中将java环境由安装版的openjdk替换为tar版的jdk
- Java JDK版本说明
- 查看JDK所支持的JAXB版本和linux下配置jdk环境变量以及查看java版本
- 详细说明JDK环境变量中dt.jar、tools.jar等变量值的作用(结合ClassLoader)
- [Java] Oracle的JDBC驱动的版本说明
- Android 开发环境搭建---Android 编译需要的sun-java5-jdk在ubuntu10.04以上版本的安装问题
- 编译环境与生成环境的JDK版本不一样,报:java.util.zip.ZipException: error in opening zip file
- ubunto 12.04中安装java环境和默认JDK版本
- 查看JDK所支持的JAXB版本和linux下配置jdk环境变量以及查看java版本
- 【Java】Linux下安装配置Oracle JDK 1.7版本
- linux下配置jdk环境变量以及查看java版本
- java转换json需导入的jar包说明
- 如何快速配好java环境变量和查看电脑上安装JDK的版本位数
- ubuntu下卸载openjdk并安装sunjdk(修改java版本/环境变量)