最近在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版本中內容必須保持一致,解析過程才可以順利的進行。
不知道這樣理解是否正確?希望大家給些指點。