Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从Bukkit插件改装API调用失败(IllegalAccessException)_Java_Gson_Retrofit_Retrofit2_Bukkit - Fatal编程技术网

Java 从Bukkit插件改装API调用失败(IllegalAccessException)

Java 从Bukkit插件改装API调用失败(IllegalAccessException),java,gson,retrofit,retrofit2,bukkit,Java,Gson,Retrofit,Retrofit2,Bukkit,我有一个API库,它使用改型(和GsonConverterFactory)发送请求并将响应解析为Java对象。这工作正常-但当我尝试从bukkit插件中使用库时,在尝试执行请求时(同步和异步-使用bukkit异步方法和改型enqueue()方法)会出现以下错误: Bukkit API调用AsyncPlayerChatEvent(然后执行函数validateToken(),在另一个类中执行executeAsync()函数,目前只在主线程上执行请求)时,Gson的newJsonWriter()函数似

我有一个API库,它使用改型(和GsonConverterFactory)发送请求并将响应解析为Java对象。这工作正常-但当我尝试从bukkit插件中使用库时,在尝试执行请求时(同步和异步-使用bukkit异步方法和改型enqueue()方法)会出现以下错误:

Bukkit API调用AsyncPlayerChatEvent(然后执行函数validateToken(),在另一个类中执行executeAsync()函数,目前只在主线程上执行请求)时,Gson的newJsonWriter()函数似乎被阻塞,因为它来自不同的模块

非常感谢您的帮助。
谢谢

我没有使用Bukkit的经验,但发生此错误是因为一个类无法访问由不同类装入器装入的另一个类的私有方法:

java.lang.IllegalAccessError:class.converter.gson.GsonRequestBodyConverter试图访问私有方法'com.google.gson.stream.JsonWriter com.google.gson.newJsonWriter(java.io.Writer)'(Refught2.converter.gson.GsonRequestBodyConverter位于加载器org.bukkit.plugin.java.PluginClassLoader@4e95987c的未命名模块中;com.google.gson.gson位于加载器“应用程序”的未命名模块中



尝试加载
Gson
库作为Bukkit部署的一部分,以便
Reformation
Gson
都由同一类加载程序加载。

您知道我会怎么做吗?目前,API库(包含Reformation和Reformation Gson转换器)在我的build.gradle文件中,带有“compile”配置,jar任务有“from configurations.compile.collect…”行以将其包含在最终的jar文件中。我也尝试过将.java文件复制并粘贴到我的当前项目中,但出现了相同的错误。
   Could not pass event AsyncPlayerChatEvent to QuartersEconomy v1.0.0
org.bukkit.event.EventException
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:306) ~[spigot-1.11.2.jar:git-Spigot-3fb9445-6e3cec8]
        at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[spigot-1.11.2.jar:git-Spigot-3fb9445-6e3cec8]
        at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:502) [spigot-1.11.2.jar:git-Spigot-3fb9445-6e3cec8]
        at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:484) [spigot-1.11.2.jar:git-Spigot-3fb9445-6e3cec8]
        at net.minecraft.server.v1_11_R1.PlayerConnection.chat(PlayerConnection.java:1276) [spigot-1.11.2.jar:git-Spigot-3fb9445-6e3cec8]
        at net.minecraft.server.v1_11_R1.PlayerConnection.a(PlayerConnection.java:1214) [spigot-1.11.2.jar:git-Spigot-3fb9445-6e3cec8]
        at net.minecraft.server.v1_11_R1.PacketPlayInChat$1.run(PacketPlayInChat.java:39) [spigot-1.11.2.jar:git-Spigot-3fb9445-6e3cec8]
        at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) [?:?]
        at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) [?:?]
        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?]
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?]
        at java.base/java.lang.Thread.run(Thread.java:830) [?:?]
Caused by: java.lang.IllegalAccessError: class retrofit2.converter.gson.GsonRequestBodyConverter tried to access private method 'com.google.gson.stream.JsonWriter com.google.gson.Gson.newJsonWriter(java.io.Writer)' (retrofit2.converter.gson.GsonRequestBodyConverter is in unnamed module of loader org.bukkit.plugin.java.PluginClassLoader @4e95987c; com.google.gson.Gson is in unnamed module of loader 'app')
        at retrofit2.converter.gson.GsonRequestBodyConverter.convert(GsonRequestBodyConverter.java:45) ~[?:?]
        at retrofit2.converter.gson.GsonRequestBodyConverter.convert(GsonRequestBodyConverter.java:30) ~[?:?]
        at retrofit2.ParameterHandler$Body.apply(ParameterHandler.java:412) ~[?:?]
        at retrofit2.RequestFactory.create(RequestFactory.java:117) ~[?:?]
        at retrofit2.OkHttpCall.createRawCall(OkHttpCall.java:192) ~[?:?]
        at retrofit2.OkHttpCall.execute(OkHttpCall.java:175) ~[?:?]
        at com.p3pi27.quarterseconomy.quarters.QuartersWrapper.executeAsync(QuartersWrapper.java:26) ~[?:?]
        at com.p3pi27.quarterseconomy.auth.AuthManager.validateTypedToken(AuthManager.java:108) ~[?:?]
        at com.p3pi27.quarterseconomy.auth.AuthManager.onPlayerChat(AuthManager.java:177) ~[?:?]
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:?]
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
        at java.base/java.lang.reflect.Method.invoke(Method.java:567) ~[?:?]
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:302) ~[spigot-1.11.2.jar:git-Spigot-3fb9445-6e3cec8]
        ... 11 more