我可以在安卓系统上使用Guice吗?

问题描述 投票:0回答:1

Guice与Android兼容吗?我问这个问题是因为在一个新的项目中,我在创建注入器时遇到了一个奇怪的错误,请看下面。

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.myapplication/com.example.myapplication.MainActivity}:   
[...]  
com.google.common.util.concurrent.UncheckedExecutionException: 
Caused by: com.google.common.util.concurrent.UncheckedExecutionException: java.lang.IllegalStateException: Unable to load cache item  
[...]  
Caused by: java.lang.UnsupportedOperationException: can't load this type of class file
        at java.lang.ClassLoader.defineClass(ClassLoader.java:591)  
[...]

下面是一段崩溃的代码(在我的MainActivity里面)。

 override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        setSupportActionBar(toolbar)

        Guice.createInjector(MyModule()) // The exception happens here

        fab.setOnClickListener { view ->
            Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
                    .setAction("Action", null).show()
        }
    }

这是我的模块。

public class MyModule extends AbstractModule {
    @Override
    protected void configure() {
        bind(DummyInterface.class).to.(DummyImplementation.class);
   }

每当我使用 toInstance() 而不是 to() 语句的应用程序运行正常,这让我认为guice反射功能与Android不兼容。这是一个正确的假设还是我做错了什么?因为我从来没有在任何地方看到Guice不能在Android上使用。

android dependency-injection guice
1个回答
1
投票

使用 no_aop版本 吉斯的。

<dependency>
  <groupId>com.google.inject</groupId>
  <artifactId>guice</artifactId>
  <version>4.2.3</version>
  <classifier>no_aop</classifier>
</dependency>
© www.soinside.com 2019 - 2024. All rights reserved.