Closed qe201020335 closed 10 months ago
S3 support is preliminary and basic, to quote the dev: the S3 thing is just what I expected to see: the upgrade was a PR that promised to support non AWS S3 implementations, and I made it quite clear that: a) I wasn't going to test the arbitrary number of non-AWS S3 implementations out there, as they cost money and time, and almost nobody uses the feature b) Consequently, it is an experimental and thus unsupported feature - folks can contribute fixes for specific implementations, but actively supporting the dozen plus 'mostly S3 compatible' implementations out there - along with whatever voodoo each of them has, if any, to enable an S3 bucket to act as a web site - is just not practical.
it either works or doesn't according to the guide on the wiki, the dev is not going to fix it as he doesn't have time to, and I don't know where to even start.
Issue Description: I followed the wiki to set up my dynmap server to use aws_s3 as storage type. It crashes on start with
java.lang.NoClassDefFoundError
. I am using CloudFlare R2 and I did make sure the server is working correctly with the default config before I switched to R2.3.7-beta-4-forge-1.20
forge-1.20.1-47.2.0
with Java 17Steps to Replicate:
configuration.txt
to use R2 as storage[✔️] I have looked at all other issues and this is not a duplicate
[✔️] I have been able to replicate this
I have also made a post on the dynmap discord help channel but I did not get any help there. It got somewhat technical as I tried to figure this out. The discord thread
From the log and call stack, I can see it tries to publish static web files to the bucket, and if I understand it correctly, some sort of dependency injection failed and caused the crash.
Then I look through the related code and I believe the exception is thrown in this function.
https://github.com/webbukkit/s3-lite/blob/be0f3eee4c6f37a0aef01b077048a0c6b5b3e6df/core/src/main/java/io/github/linktosriram/s3lite/core/client/DefaultS3Client.java#L193-L211
In which,
XMLInputFactory fact = XMLInputFactory.newInstance();
is causing problems as seen in the stack trace.Since this is the error handling code for the s3 API, I know my config is probably wrong because it failed to publish the files. However, due to the unhandled error in the "error handling" code, I don't know exactly what is wrong and what is the status code returned from R2.
I have tried multiple JDKs (Oracle, OpenJDK, Microsoft) on both Ubuntu and Windows, and it all crashes with the same exception.
I did some more google searches and I think I found some related issues (i am not sure) https://stackoverflow.com/questions/64979229/eclipse-osgi-java-11-jaxb-and-the-classloader https://stackoverflow.com/questions/72093691/jaxb-with-jdk17-classloader-issues It seems there are some problems with higher versions of jdk. So tried Java 11 and 13 but they can't even load the launcher jar.
I guess I have to use Java 17, and I don't know what to do now.