有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java NoSuchMethodError:akka。男演员LocalActorRefProvider。log()Lakka/event/LoggingAdapter

当我开始一个简单的akka-http-server时,我得到一个异常。我搜索了整个互联网,找到了两个不适合我的解决方案:

  1. 混合scala版本。(我检查了我的pom 2.11 scala,没有混音)
  2. 更改scala演员版本。(我用2.11 scala尝试了近十个版本)

我不知道如何解决这个问题,请告诉我如何解决

application.conf
akka {
  actor {
    provider = "akka.remote.RemoteActorRefProvider"
  }
  remote {
    enabled-transports = ["akka.remote.netty.tcp"]
    netty.tcp {
      hostname = "127.0.0.1"
      port = 2552
    }
  }
}

main class
package com.akkademo;
import akka.actor.ActorSystem;
import akka.actor.Props;
import com.typesafe.config.Config;
import com.typesafe.config.ConfigFactory;
public class Main {
    public static void main(String[] args) {
        ActorSystem actorSystem = ActorSystem.create("akkademo", ConfigFactory.load());
        Config config = actorSystem.settings().config();
        actorSystem.actorOf(Props.create(AkkademoDb.class), "akkademo-db");
    }
}

pom.xml
     <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
            <jdk.version>1.8</jdk.version>
            <scala>2.11</scala>

            <scala.version>2.11.8</scala.version>
            <akka.version>2.4.14</akka.version>
            <akka.remote>2.3.6</akka.remote>
            <akka.compat>0.7.0</akka.compat>
            <akka.test>2.5.9</akka.test>
        </properties>
        <dependencies>
            <dependency>
                <groupId>org.junit.jupiter</groupId>
                <artifactId>junit-jupiter-api</artifactId>
                <version>RELEASE</version>
                <scope>compile</scope>
            </dependency>
            <dependency>
                <groupId>com.typesafe.akka</groupId>
                <artifactId>akka-testkit_${scala}</artifactId>
                <version>${akka.test}</version>
            </dependency>
            <dependency>
                <groupId>com.typesafe.akka</groupId>
                <artifactId>akka-remote_${scala}</artifactId>
                <version>${akka.remote}</version>
            </dependency>
            <dependency>
                <groupId>org.scala-lang.modules</groupId>
                <artifactId>scala-java8-compat_${scala}</artifactId>
                <version>${akka.compat}</version>
            </dependency>
            <dependency>
                <groupId>com.typesafe.akka</groupId>
                <artifactId>akka-actor_${scala}</artifactId>
                <version>${akka.version}</version>
            </dependency>
            <dependency>
                <groupId>com.typesafe.akka</groupId>
                <artifactId>akka-slf4j_${scala}</artifactId>
                <version>${akka.version}</version>
            </dependency>
            <dependency>
                <groupId>org.scala-lang</groupId>
                <artifactId>scala-library</artifactId>
                <version>${scala.version}</version>
            </dependency>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.11</version>
            </dependency>

        </dependencies>
        <repositories>
            <repository>
                <id>aliyun</id>
                <name>aliyun</name>
                <url>http://maven.aliyun.com/nexus/content/groups/public</url>
            </repository>
        </repositories>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>2.3.2</version>
                    <configuration>
                        <source>${jdk.version}</source>
                        <target>${jdk.version}</target>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    </project>

Exception in thread "main" java.lang.NoSuchMethodError: akka.actor.LocalActorRefProvider.log()Lakka/event/LoggingAdapter; at akka.remote.RemoteActorRefProvider.(RemoteActorRefProvider.scala:128) at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:423) at akka.actor.ReflectiveDynamicAccess$$anonfun$createInstanceFor$2.apply(ReflectiveDynamicAccess.scala:32) at scala.util.Try$.apply(Try.scala:192) at akka.actor.ReflectiveDynamicAccess.createInstanceFor(ReflectiveDynamicAccess.scala:27) at akka.actor.ReflectiveDynamicAccess$$anonfun$createInstanceFor$3.apply(ReflectiveDynamicAccess.scala:38) at akka.actor.ReflectiveDynamicAccess$$anonfun$createInstanceFor$3.apply(ReflectiveDynamicAccess.scala:38) at scala.util.Success.flatMap(Try.scala:231) at akka.actor.ReflectiveDynamicAccess.createInstanceFor(ReflectiveDynamicAccess.scala:38) at akka.actor.ActorSystemImpl.liftedTree1$1(ActorSystem.scala:620) at akka.actor.ActorSystemImpl.(ActorSystem.scala:613) at akka.actor.ActorSystem$.apply(ActorSystem.scala:142) at akka.actor.ActorSystem$.apply(ActorSystem.scala:119) at akka.actor.ActorSystem$.create(ActorSystem.scala:67) at akka.actor.ActorSystem.create(ActorSystem.scala) at com.akkademo.Main.main(Main.java:15)


共 (1) 个答案

  1. # 1 楼答案

    您的问题可能是由于使用了不同的akka-remoting和核心akka-actor包的次要版本造成的

    akka.versionakka.remote属性设置为相同的值。目前的版本是2.5.19