mesosphere / marathon-example-plugins

Example Plugins for Marathon Plugin Interface
Apache License 2.0
22 stars 30 forks source link

Plugins failed on Marathon 1.3.1 #14

Open simonandluna opened 7 years ago

simonandluna commented 7 years ago

When I try to run marathon 1.3.1 with this plugin, it always gave the error of not being able to find the method of play.api.libs.json.JsLookup.

[2016-10-07 09:50:02,240] ERROR Terminating due to uncaught exception in thread main:1 (mesosphere.marathon.Main$:main)
com.google.inject.CreationException: Guice creation errors:

1) Error injecting constructor, java.lang.NoSuchMethodError: play.api.libs.json.JsLookup$.$bslash$extension(Lplay/api/libs/json/JsLookupResult
;Ljava/lang/String;)Lplay/api/libs/json/JsLookupResult;
  at mesosphere.marathon.core.CoreModuleImpl.<init>(CoreModuleImpl.scala:46)
  while locating mesosphere.marathon.core.CoreModuleImpl
  at mesosphere.marathon.core.CoreGuiceModule.configure(CoreGuiceModule.scala:144)
  while locating mesosphere.marathon.core.CoreModule
  at mesosphere.marathon.core.CoreGuiceModule.taskTracker(CoreGuiceModule.scala:46)
  at mesosphere.marathon.core.CoreGuiceModule.taskTracker(CoreGuiceModule.scala:46)
  while locating mesosphere.marathon.core.task.tracker.TaskTracker
    for parameter 2 at mesosphere.marathon.core.task.update.impl.TaskStatusUpdateProcessorImpl.<init>(TaskStatusUpdateProcessorImpl.scala:27)
  while locating mesosphere.marathon.core.task.update.impl.TaskStatusUpdateProcessorImpl
  at mesosphere.marathon.core.CoreGuiceModule.configure(CoreGuiceModule.scala:147)
  while locating mesosphere.marathon.core.task.update.TaskStatusUpdateProcessor annotated with @com.google.inject.name.Named(value=ThrottlingT
askStatusUpdateProcessor)
Caused by: java.lang.NoSuchMethodError: play.api.libs.json.JsLookup$.$bslash$extension(Lplay/api/libs/json/JsLookupResult;Ljava/lang/String;)L
play/api/libs/json/JsLookupResult;
    at mesosphere.marathon.example.plugin.auth.ExampleAuthenticator.initialize(ExampleAuthenticator.scala:48)
    at mesosphere.marathon.core.plugin.impl.PluginManagerImpl.mesosphere$marathon$core$plugin$impl$PluginManagerImpl$$configure$1(PluginMa
nagerImpl.scala:39)

However, the compiled plugin jar indeed contains the method:

$jar -tf /var/marathon/plugins/marathon_plugin.jar | grep "play/api/libs/json/JsLookupResult"
play/api/libs/json/JsLookupResult$$anonfun$getOrElse$1.class
play/api/libs/json/JsLookupResult$.class
play/api/libs/json/JsLookupResult$class.class
play/api/libs/json/JsLookupResult.class

I have tried many versions of play-json from 2.4.1 to 2.5.8. It won't work.

Any ideas?

karthimohan commented 7 years ago

@simonandluna Try the fix provided by https://github.com/mesosphere/marathon-example-plugins/pull/15