Description
I'm trying to build a fork of the master
branch of ClassMate using OpenJDK 17 on Windows and Maven 3.9.4. I do a simple:
mvn verify
I get:
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project classmate: Compilation failure: Compilation failure:
[ERROR] Source option 6 is no longer supported. Use 7 or later.
[ERROR] Target option 6 is no longer supported. Use 7 or later.
As v3.8.1 is a pretty old version of the Maven compiler plugin (probably inherited from com.fasterxml:oss-parent:43
), I would guess that the issue here is my Java 17; it probably doesn't support Java 6—which was released almost 20 years ago!
Just for "fun" I switched to Java 7:
<version.jdk>7</version.jdk>
This gives me all sorts of new errors:
[ERROR] Failures:
[ERROR] TestMemberResolver.testAddOverridesFromInterfaces:292 expected:<4> but was:<6>
[ERROR] TestTypeDescriptions.testSimpleTypes:38 expected:<...va.lang.CharSequence[]> but was:<...va.lang.CharSequence[,java.lang.constant.Constable,java.lang.constant.ConstantDesc]>
[ERROR] ResolvedObjectTypeTest.testGetStaticFields:81 Expected 3 (JDK 1.6), 4 (1.7/1.8) or 6 (1.9) static fields, got 7; fields: [serialVersionUID, COMPACT_STRINGS, serialPersistentFields, REPL, CASE_INSENSITIVE_ORDER, LATIN1, UTF16]
I'm guessing these are unit tests that fail under Java 7 for whatever reason (assuming they weren't failing for you already on Java 6—I have no way to know without (gasp!) downgrading my JDK. 😄).
Basically the feeling I'm getting is that someone needs to go into the library and just bring it up-to-speed to some modern Java version—update the plugins, fix the unit tests, etc. I could help do that, but only if you say it's OK to move off Java 6. I don't know your feelings about that.
I know as an open-source library maintainer it's easy to think, "oh, I don't want to keep anyone from using my library", and I've had those feelings many times as well. But I think there's a limit and we need to encourage going forward with Java. I would recommend Java 11 at the minimum, but I could work on this if you could at least bear switching to Java 8. I think Java 7 and below would just be too much pain for me without any realistic gain.