unclebob / fitnesse

FitNesse -- The Acceptance Test Wiki
fitnesse.org
Other
2.02k stars 712 forks source link

Compatibility Java 17 LTS #1337

Closed HoneyBadgerSeeker closed 2 years ago

HoneyBadgerSeeker commented 2 years ago

Describe the bug FitNesse execution crash at the first custom fixture. The import package is fine. I know FitNesse doesn't support java 15 as stated here (http://fitnesse.org/FitNesseDownload). But it should be handled by the lastest LTS JAVA version.

To Reproduce Launching a FitNesse test with JDK 17 LTS with the following fixture

Fixture code

public class BuildProp {
    private static final Properties properties = new Properties();
    public String key;
    public String value;
    public BuildProp() {
        properties.put("stuff", "stuff");
    }
    public void setKey(String key) {
        this.key = key;
    }
    public void setValue(String value) {
        properties.put(this.key, value);
    }
}

Fixture called this way:

!|BuildProp|
|key |value|
|a   |b    |

Expected behavior Test is executing normally.

Stack Trace java.lang.IllegalAccessError: superclass access check failed: class com.github.tomakehurst.wiremock.common.Xml$SkipResolvingEntitiesDocumentBuilderFactory (in unnamed module @0x104448e4) cannot access class com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl (in module java.xml) because module java.xml does not export com.sun.org.apache.xerces.internal.jaxp to unnamed module @0x104448e4

Configuration:

HoneyBadgerSeeker commented 2 years ago

To solve this issue, we added the last version of Junit as well as the last version of Wiremock as dependency in our pom.xml Everything seems fine, FitNesse 20210606 looks OK with JDK 17.

fhoeben commented 2 years ago

I expect FitNesse is not completely fine on JDK 17, as I suspect the Javascript engine removed in JDK 15 has not been reintroduced. But good to hear you got your setup to work!

LeiYangGH commented 5 months ago

i got following exception when starting fitnesse 20240219 as a maven dependency, under open jdk 17:

Mar 15, 2024 8:51:23 AM fitnesseMain.FitNesseMain main SEVERE: Error while starting the FitNesse org.apache.velocity.exception.VelocityException: The specified class for ResourceManager (org.apache.velocity.runtime.resource.ResourceManagerImpl) does not exist or is not accessible to the current classloader. at org.apache.velocity.runtime.RuntimeInstance.initializeResourceManager(RuntimeInstance.java:806) at org.apache.velocity.runtime.RuntimeInstance.init(RuntimeInstance.java:282) at org.apache.velocity.runtime.RuntimeInstance.init(RuntimeInstance.java:749) at org.apache.velocity.app.VelocityEngine.init(VelocityEngine.java:122) at fitnesse.html.template.PageFactory.newVelocityEngine(PageFactory.java:71) at fitnesse.html.template.PageFactory.(PageFactory.java:22)

i'm not sure this is caused by jdk version mismatch or not. i'm sure my same code works well under jdk11. and i can run fitnesse-standalone.jar using jdk 17.