關於JDK中高版本建立的專案低版本無法編譯
阿新 • • 發佈:2019-02-16
今天閒著有點蛋疼,就寫點文章,也算是對自己和大家的一個幫助吧。
隨機著前段時間java10的出現,我興起用起了JDK10,接下來我就遇到一個問題,就是之前用JDK10建立的專案,如果用比建立此專案更低的JDK無法編譯此專案。Error:UnsupportedClassVersionError。
Exception in thread "main" java.lang.UnsupportedClassVersionError: com/java/list/ListTest has been compiled by a more recent version of the Java Runtime (class file version 53.0), this version of the Java Runtime only recognizes class file versions up to 52.0 at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:763) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) at java.net.URLClassLoader.defineClass(URLClassLoader.java:467) at java.net.URLClassLoader.access$100(URLClassLoader.java:73) at java.net.URLClassLoader$1.run(URLClassLoader.java:368) at java.net.URLClassLoader$1.run(URLClassLoader.java:362) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:361) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:495)
刪除位元組碼檔案效果
當時我看到上面的錯誤,我第一個想到的就是重新編譯,先把編譯後的位元組碼(.class)檔案刪除,然後再重新編譯。
結果又出錯了“找不到或無法載入主類”。這錯報的真夠奇葩的。
唯一的解決方案:新建一個專案,把程式碼copy進去。我也是我知道的唯一的辦法,如果還是其它辦法歡迎在下面留言。