2017-08-15 3 views
0

J'ai ajouté mes fichiers jar xgboost dans la bibliothèque et les modules de ma structure de projet. (J'ai construit les fichiers jar de la source avec succès comme mentionné dans la documentation). Je ne peux pas sembler capable de résoudre la dépendance pour cela. J'ai essayé de l'exécuter avec la dépendance incluse dans le fichier build sbt et avec elle enlevée (puisque les jars sont déjà inclus dans la bibliothèque et les dépendances via la structure du projet). Les deux semblent échouer. Est-ce une sorte de problème de compatibilité? Je cours le scala 2.11.8 et l'étincelle 2.1.0. Mes dépendances sont incluses dans une séquence comme suit:Dépendance non résolue avec la bibliothèque xgboost dans scala

"ml.dmlc" %% "xgboost4j" % "0.7", "ml.dmlc" %% "xgboost4j-spark" % "0.7" 

Je semble manquer quelque chose mais je ne sais pas quoi. Des idées?

J'ai essayé de publier le pot comme suggéré, mais je reçois l'erreur suivante:

sbt.ResolveException: unresolved dependency: ml.dmlc#xgboost4j_2.11;0.7: not found 
unresolved dependency: ml.dmlc#xgboost4j-spark_2.11;0.7: not found 
     at sbt.IvyActions$.sbt$IvyActions$$resolve(IvyActions.scala:313) 
     at sbt.IvyActions$$anonfun$updateEither$1.apply(IvyActions.scala:191) 
     at sbt.IvyActions$$anonfun$updateEither$1.apply(IvyActions.scala:168) 
     at sbt.IvySbt$Module$$anonfun$withModule$1.apply(Ivy.scala:156) 
     at sbt.IvySbt$Module$$anonfun$withModule$1.apply(Ivy.scala:156) 
     at sbt.IvySbt$$anonfun$withIvy$1.apply(Ivy.scala:133) 
     at sbt.IvySbt.sbt$IvySbt$$action$1(Ivy.scala:57) 
     at sbt.IvySbt$$anon$4.call(Ivy.scala:65) 
     at xsbt.boot.Locks$GlobalLock.withChannel$1(Locks.scala:93) 
     at xsbt.boot.Locks$GlobalLock.xsbt$boot$Locks$GlobalLock$$withChannelRetries$1(Locks.scala:78) 
     at xsbt.boot.Locks$GlobalLock$$anonfun$withFileLock$1.apply(Locks.scala:97) 
     at xsbt.boot.Using$.withResource(Using.scala:10) 
     at xsbt.boot.Using$.apply(Using.scala:9) 
     at xsbt.boot.Locks$GlobalLock.ignoringDeadlockAvoided(Locks.scala:58) 
     at xsbt.boot.Locks$GlobalLock.withLock(Locks.scala:48) 
     at xsbt.boot.Locks$.apply0(Locks.scala:31) 
     at xsbt.boot.Locks$.apply(Locks.scala:28) 
     at sbt.IvySbt.withDefaultLogger(Ivy.scala:65) 
     at sbt.IvySbt.withIvy(Ivy.scala:128) 
     at sbt.IvySbt.withIvy(Ivy.scala:125) 
     at sbt.IvySbt$Module.withModule(Ivy.scala:156) 
     at sbt.IvyActions$.updateEither(IvyActions.scala:168) 
     at sbt.Classpaths$$anonfun$sbt$Classpaths$$work$1$1.apply(Defaults.scala:1439) 
     at sbt.Classpaths$$anonfun$sbt$Classpaths$$work$1$1.apply(Defaults.scala:1435) 
     at sbt.Classpaths$$anonfun$doWork$1$1$$anonfun$90.apply(Defaults.scala:1470) 
     at sbt.Classpaths$$anonfun$doWork$1$1$$anonfun$90.apply(Defaults.scala:1468) 
     at sbt.Tracked$$anonfun$lastOutput$1.apply(Tracked.scala:37) 
     at sbt.Classpaths$$anonfun$doWork$1$1.apply(Defaults.scala:1473) 
     at sbt.Classpaths$$anonfun$doWork$1$1.apply(Defaults.scala:1467) 
     at sbt.Tracked$$anonfun$inputChanged$1.apply(Tracked.scala:60) 
     at sbt.Classpaths$.cachedUpdate(Defaults.scala:1490) 
     at sbt.Classpaths$$anonfun$updateTask$1.apply(Defaults.scala:1417) 
     at sbt.Classpaths$$anonfun$updateTask$1.apply(Defaults.scala:1369) 
     at scala.Function1$$anonfun$compose$1.apply(Function1.scala:47) 
     at sbt.$tilde$greater$$anonfun$$u2219$1.apply(TypeFunctions.scala:40) 
     at sbt.std.Transform$$anon$4.work(System.scala:63) 
     at sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:228) 
     at sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:228) 
     at sbt.ErrorHandling$.wideConvert(ErrorHandling.scala:17) 
     at sbt.Execute.work(Execute.scala:237) 
     at sbt.Execute$$anonfun$submit$1.apply(Execute.scala:228) 
     at sbt.Execute$$anonfun$submit$1.apply(Execute.scala:228) 
     at sbt.ConcurrentRestrictions$$anon$4$$anonfun$1.apply(ConcurrentRestrictions.scala:159) 
     at sbt.CompletionService$$anon$2.call(CompletionService.scala:28) 
     at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
     at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) 
     at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
     at java.lang.Thread.run(Thread.java:745) 
[error] (*:update) sbt.ResolveException: unresolved dependency: ml.dmlc#xgboost4j_2.11;0.7: not found 
[error] unresolved dependency: ml.dmlc#xgboost4j-spark_2.11;0.7: not found 
[error] Total time: 24 s, completed Aug 15, 2017 12:40:52 PM 
+0

Vous pouvez créer un fichier jar à partir d'une source et le traiter comme une dépendance non gérée ou extraire un fichier jar de maven et le traiter comme une dépendance gérée. – erip

+0

Alternativement, vous pouvez publier les jars pour xgboost dans un artefact ... pour le prototyper, publiez-les dans votre répertoire ivy local. Dans sbt, 'sbt publish-local' et dans maven,' mvn install' (depuis le répertoire xgboost). C'est ce que vous devrez faire pour xgboost. – erip

+0

@erip il doit être traité comme une dépendance non gérée Je suppose que le xgboost4j doit être construit à partir de la source. J'ai essayé de construire à partir de la source, mais cela ne résout pas vraiment la dépendance. J'ai mis à jour la question! – Roshini

Répondre

0

La dépendance ne devrait avoir un% là-bas.

"ml.dmlc" % "xgboost4j" % "0.7", "ml.dmlc" % "xgboost4j-spark" % "0.7"