1

如何运行将 Akka 打包在一个胖 jar 中的 SUIM 示例?

按照项目的自述文件,我收到以下错误,大意是缺少 Akka 配置元素。

我使用 Maven 作为构建工具。几个网站说我可以通过使用 Maven shade 插件来解决这个问题。按照推荐使用阴影插件构建,我仍然得到同样的错误。所以我想我做错了。有人可以发现我缺少什么 - 或指出我需要做的其他事情吗?我已将下面的阴影插件配置添加到 SUIM 源代码中的示例 pom 并重新构建。

当然,我希望作者能够以某种方式在没有阴影插件的情况下运行它。因此,如果有办法完全绕过它,请告诉我。

配置

  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-shade-plugin</artifactId>
    <version>2.3</version>
    <configuration>
      <shadedArtifactAttached>true</shadedArtifactAttached>
      <shadedClassifierName>allinone</shadedClassifierName>
      <artifactSet>
        <includes>
          <include>*:*</include>
        </includes>
      </artifactSet>
      <filters>
        <filter>
          <artifact>*:*</artifact>
          <excludes>
            <exclude>META-INF/*.SF</exclude>
            <exclude>META-INF/*.DSA</exclude>
            <exclude>META-INF/*.RSA</exclude>
          </excludes>
        </filter>
      </filters>
  <transformers>
    <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
      <resource>reference.conf</resource>
    </transformer>
    <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
      <resource>META-INF/spring.handlers</resource>
    </transformer>
    <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
      <resource>META-INF/spring.schemas</resource>
    </transformer>
    <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
          <manifestEntries>
        <Main-Class>edu.cmu.lti.suim.examples.App</Main-Class>
      </manifestEntries>
    </transformer>
  </transformers>
    </configuration>
    <executions>
      <execution>
        <phase>package</phase>
        <goals>
          <goal>shade</goal>
        </goals>
      </execution>
    </executions>
  </plugin>

错误

$ java -cp ./suim-examples/target/suim-examples-0.0.1-SNAPSHOT-jar-with-dependencies.jar edu.cmu.lti.suim.examples.App local[2]
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
Exception in thread "main" com.typesafe.config.ConfigException$Missing: No configuration setting found for key 'akka.remote.log-received-messages'
at com.typesafe.config.impl.SimpleConfig.findKey(SimpleConfig.java:126)
at com.typesafe.config.impl.SimpleConfig.find(SimpleConfig.java:146)
at com.typesafe.config.impl.SimpleConfig.find(SimpleConfig.java:151)
at com.typesafe.config.impl.SimpleConfig.find(SimpleConfig.java:151)
at com.typesafe.config.impl.SimpleConfig.find(SimpleConfig.java:119)
at com.typesafe.config.impl.SimpleConfig.find(SimpleConfig.java:157)
at com.typesafe.config.impl.SimpleConfig.getBoolean(SimpleConfig.java:167)
at akka.remote.RemoteSettings.<init>(RemoteSettings.scala:18)
at akka.remote.RemoteActorRefProvider.<init>(RemoteActorRefProvider.scala:32)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
at akka.actor.ReflectiveDynamicAccess$$anonfun$createInstanceFor$3$$anonfun$apply$1.apply(DynamicAccess.scala:108)
at akka.actor.ReflectiveDynamicAccess$$anonfun$createInstanceFor$3$$anonfun$apply$1.apply(DynamicAccess.scala:105)
at akka.actor.DynamicAccess$class.withErrorHandling(DynamicAccess.scala:72)
at akka.actor.ReflectiveDynamicAccess.withErrorHandling(DynamicAccess.scala:90)
at akka.actor.ReflectiveDynamicAccess$$anonfun$createInstanceFor$3.apply(DynamicAccess.scala:105)
at akka.actor.ReflectiveDynamicAccess$$anonfun$createInstanceFor$3.apply(DynamicAccess.scala:102)
at scala.Either.fold(Either.scala:96)
at akka.actor.ReflectiveDynamicAccess.createInstanceFor(DynamicAccess.scala:102)
at akka.actor.ActorSystemImpl.<init>(ActorSystem.scala:549)
at akka.actor.ActorSystem$.apply(ActorSystem.scala:111)
at akka.actor.ActorSystem$.apply(ActorSystem.scala:104)
at org.apache.spark.util.AkkaUtils$.createActorSystem(AkkaUtils.scala:64)
at org.apache.spark.SparkEnv$.createFromSystemProperties(SparkEnv.scala:128)
at org.apache.spark.SparkContext.<init>(SparkContext.scala:105)
at edu.cmu.lti.suim.examples.App$.main(App.scala:37)
at edu.cmu.lti.suim.examples.App.main(App.scala)

SUIM是一个融合了 Apache UIMA 和 Spark 的项目。

4

0 回答 0