com.google.gson.Gson.newJsonWriter上带有Retrofit 2的java.lang.IllegalAccessError

时间:2017-04-05 01:48:32

标签: java gson retrofit2 plaid

如何找出导致此file.py问题的原因?任何帮助表示赞赏。

我已经按照一些修复/解决方法从maven使用Gson 2.8。以下是部分Maven配置:

IllegalAccessError

和完整堆栈跟踪:

<dependency>
    <groupId>com.squareup.retrofit2</groupId>
    <artifactId>converter-gson</artifactId>
    <version>2.2.0</version>
    <exclusions>
        <exclusion>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
        </exclusion>
    </exclusions>
</dependency>

<dependency>
    <groupId>com.google.code.gson</groupId>
    <artifactId>gson</artifactId>
    <version>2.8.0</version>
</dependency>

2 个答案:

答案 0 :(得分:4)

根据IllegalAccessError文件:

  

如果应用程序试图访问或修改字段,或调用它无权访问的方法,则抛出该文件。

     

...此错误只能在运行时发生,如果类的定义发生不兼容的更改

在您的情况下,异常是在运行时抛出,这意味着在编译时类路径与运行时的类路径不同。

一般情况下可以通过分析传递依赖性来解决此类问题,您可以使用maven dependency plugin

mvn dependency:tree

您很可能会在gson版本的某些lib中发现与您声明的版本不同的传递依赖。

注意:如果替换其中一个传递依赖项,则可能会制造其他东西。请注意这一点,并确保使用兼容的库。

答案 1 :(得分:2)

现在解决了。我是这样做的,对于其他人也在寻找类似的问题:

我使用'jar -tf filename.jar'列出或转储我们使用的每个包的内容,并搜索结果'gson'。

我能够识别出包含gson的第三方软件包之一。一旦这个jar文件被隔离,问题便消失了。

感谢阅读。