Exception in thread "main" java.lang.UnsupportedClassVersionError的另类解决办法

最近在Linux虚拟机上跑在windows平台上的eclipes打出来的jar包时报出Exception in thread “main” java.lang.UnsupportedClassVersionError的错误:
这里写图片描述
经过上网查询了解到是因为自己Windows使用的是jdk1.8版本,而Linux使用的是jdk1.7版本,所以造成这样的报错。看了网上的一些方法,但是无意中自己找到了一个“另类的方法”:不需要在windows平台上下载jdk1.7,也能让Linux运行在windows平台jdk1.8版本打成的jar包。
具体的过程是这样的:
由于我这里有个用eclipes项目(关联的jdk版本为1.7),但是我导入到自己的eclipes后,这里虽然标题显示是jdk1.7,但是引用的确是jre1.8的lib。
这里写图片描述
然后将生成的jar包放入Linux中就能够运行:
这里写图片描述
总结:在这里是不是就可以说,Linux在编译windows打好的jar包的时候,相关代码逻辑只是对jdk版本号的进行了对比。那我们就可以只用假冒下jdk的版本号就能实现jdk不同版本的跨平台解析。当然前提是解析jar包时用到的一些东西在两个jdk版本中内容必须保持一致,解析过程才可以顺利的进行。
不知道这样理解是否正确?希望大家给些指点。

已标记关键词 清除标记
使用jxl读取数据库,代码如下: package test; import java.io.*; import jxl.*; public class ReadExcel { public void readExcel(String strPath) throws Exception{ System.out.println(strPath); File file=new File(strPath); Workbook workBook = Workbook.getWorkbook(file); Sheet sheet=workBook.getSheet(0); Cell[] row; Cell cell; for (int i = 0; i < sheet.getRows(); i++) { row = sheet.getRow(i); for (int j = 0; j < row.length; j++) { cell = row[j]; System.out.print(cell.getContents()+" type:"+cell.getType() + "\t"); } System.out.println(""); } workBook.close(); } public static void main(String[] args) { try { new ReadExcel().readExcel("E:\\text.xls"); } catch (Exception e) { e.printStackTrace(); } } } 出现该异常,具体内容为: Exception in thread "main" java.lang.UnsupportedClassVersionError: Bad version number in .class file at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(Unknown Source) at java.security.SecureClassLoader.defineClass(Unknown Source) at java.net.URLClassLoader.defineClass(Unknown Source) at java.net.URLClassLoader.access$100(Unknown Source) at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClassInternal(Unknown Source) at test.ReadExcel.readExcel(ReadExcel.java:11) at test.ReadExcel.main(ReadExcel.java:29) 网上搜索原因说是因为JDK存在不同版本的问题,修改以后依旧报错,困扰,希望能得到大家的帮助。
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页