1. 程式人生 > >關於JDK中高版本建立的專案低版本無法編譯

關於JDK中高版本建立的專案低版本無法編譯

今天閒著有點蛋疼,就寫點文章,也算是對自己和大家的一個幫助吧。

    隨機著前段時間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進去。我也是我知道的唯一的辦法,如果還是其它辦法歡迎在下面留言。