unimined / JvmDowngrader

Downgrades modern java bytecode to older versions. at either compile or runtime.
https://jvmdowngrader.wagyourtail.xyz
Other
48 stars 5 forks source link

No `List.getLast` method #12

Closed Ledmington closed 1 month ago

Ledmington commented 1 month ago

Steps to reproduce:

git clone https://github.com/Ledmington/emu.git
cd emu
./gradlew emu-main:fatjar
cp emu-main/build/libs/emu-emu.jar .
java21 -jar jvmdowngrader-0.8.4-all.jar -c 52 downgrade -t emu-emu.jar output.jar
java8 -jar output.jar `which zip`

The output is this:

[00:00:00.063][main][emu][ERROR] java.lang.NoClassDefFoundError
[00:00:00.063][main][emu][ERROR] xyz/wagyourtail/jvmdg/j21/stub/java_base/J_U_List
[00:00:00.063][main][emu][ERROR]   com.ledmington.elf.section.DynamicSection.<init>(DynamicSection.java:62)
[00:00:00.064][main][emu][ERROR]   com.ledmington.elf.ELFReader.readSectionTable(ELFReader.java:310)
[00:00:00.064][main][emu][ERROR]   com.ledmington.elf.ELFReader.read(ELFReader.java:70)
[00:00:00.064][main][emu][ERROR]   com.ledmington.emu.Main.parseELF(Main.java:55)
[00:00:00.064][main][emu][ERROR]   com.ledmington.emu.Main.run(Main.java:59)
[00:00:00.064][main][emu][ERROR]   com.ledmington.emu.Main.main(Main.java:189)
[00:00:00.064][main][emu][ERROR] Caused by:
[00:00:00.064][main][emu][ERROR] java.lang.ClassNotFoundException
[00:00:00.065][main][emu][ERROR] xyz.wagyourtail.jvmdg.j21.stub.java_base.J_U_List
[00:00:00.065][main][emu][ERROR]   java.net.URLClassLoader.findClass(URLClassLoader.java:387)
[00:00:00.065][main][emu][ERROR]   java.lang.ClassLoader.loadClass(ClassLoader.java:418)
[00:00:00.065][main][emu][ERROR]   sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:352)
[00:00:00.065][main][emu][ERROR]   java.lang.ClassLoader.loadClass(ClassLoader.java:351)
[00:00:00.065][main][emu][ERROR]   com.ledmington.elf.section.DynamicSection.<init>(DynamicSection.java:62)
[00:00:00.066][main][emu][ERROR]   com.ledmington.elf.ELFReader.readSectionTable(ELFReader.java:310)
[00:00:00.066][main][emu][ERROR]   com.ledmington.elf.ELFReader.read(ELFReader.java:70)
[00:00:00.066][main][emu][ERROR]   com.ledmington.emu.Main.parseELF(Main.java:55)
[00:00:00.066][main][emu][ERROR]   com.ledmington.emu.Main.run(Main.java:59)
[00:00:00.066][main][emu][ERROR]   com.ledmington.emu.Main.main(Main.java:189)

It seems that the error is here, the getLast method added in java 21.

wagyourtail commented 1 month ago

see the pinned issue. you didn't shade the api, so it couldn't find any of the stubbed api

and yeah, getLast is there https://github.com/unimined/JvmDowngrader/blob/326ffd2254a85876d1599220fd2ed8c992808790/java-api/src/java21/java/xyz/wagyourtail/jvmdg/j21/stub/java_base/J_U_List.java#L34