You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jira@kafka.apache.org by "John Roesler (JIRA)" <ji...@apache.org> on 2018/12/18 00:18:00 UTC

[jira] [Commented] (KAFKA-7741) Bad dependency via SBT

    [ https://issues.apache.org/jira/browse/KAFKA-7741?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16723514#comment-16723514 ] 

John Roesler commented on KAFKA-7741:
-------------------------------------

Hi [~sachabarber],

Thanks for the report. I've not seen this error before, but I can confirm I also get the same error on my machine with:

build.sbt:
{noformat}
name := "ScalaKafkaStreamsDemo"

version := "1.0"

scalaVersion := "2.12.1"

libraryDependencies += "org.apache.kafka" %% "kafka" % "2.1.0"
libraryDependencies += "org.apache.kafka" % "kafka-clients" % "2.1.0"
libraryDependencies += "org.apache.kafka" % "kafka-streams" % "2.1.0"
libraryDependencies += "javax.ws.rs" % "javax.ws.rs-api" % "2.1.1"
libraryDependencies += "org.apache.kafka" %% "kafka-streams-scala" % "2.1.0"

//TEST
libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.5" % Test
libraryDependencies += "org.apache.kafka" % "kafka-streams-test-utils" % "2.1.0" % Test
{noformat}
and:
{noformat}
$ sbt compile
[info] Loading settings for project global-plugins from idea.sbt,plugins.sbt ...
[info] Loading global plugins from /home/john/.sbt/1.0/plugins
[info] Loading project definition from /tmp/test/project
[info] Loading settings for project test from build.sbt ...
[info] Set current project to ScalaKafkaStreamsDemo (in build file:/tmp/test/)
[info] Executing in batch mode. For better performance use sbt's shell
[info] Updating ...
[warn] Detected merged artifact: [FAILED ] javax.ws.rs#javax.ws.rs-api;2.1.1!javax.ws.rs-api.${packaging.type}: (0ms).
[warn] ==== local: tried
[warn] ==== public: tried
[warn] https://repo1.maven.org/maven2/javax/ws/rs/javax.ws.rs-api/2.1.1/javax.ws.rs-api-2.1.1.${packaging.type}
[warn] ==== local-preloaded-ivy: tried
[warn] /home/john/.sbt/preloaded/javax.ws.rs/javax.ws.rs-api/2.1.1/${packaging.type}s/javax.ws.rs-api.${packaging.type}
[warn] ==== local-preloaded: tried
[warn] file:////home/john/.sbt/preloaded/javax/ws/rs/javax.ws.rs-api/2.1.1/javax.ws.rs-api-2.1.1.${packaging.type}
[warn] ::::::::::::::::::::::::::::::::::::::::::::::
[warn] :: FAILED DOWNLOADS ::
[warn] :: ^ see resolution messages for details ^ ::
[warn] ::::::::::::::::::::::::::::::::::::::::::::::
[warn] :: javax.ws.rs#javax.ws.rs-api;2.1.1!javax.ws.rs-api.${packaging.type}
[warn] ::::::::::::::::::::::::::::::::::::::::::::::
...{noformat}
That URL has an unsubstituted variable in it, so I did a little searching for "sbt packaging.type", and it looks like it might be a bug in the way that Maven and SBT are working together.

See for example: [https://github.com/ronmamo/reflections/issues/169]

It seems like the general approach people are using is to just make SBT replace "${packaging.type}" with "jar" (the actual artifact is at https://repo1.maven.org/maven2/javax/ws/rs/javax.ws.rs-api/2.1.1/javax.ws.rs-api-2.1.1.jar").

For example:
{noformat}
$ sbt -Dpackaging.type=jar compile
[info] Loading settings for project global-plugins from idea.sbt,plugins.sbt ...
[info] Loading global plugins from /home/john/.sbt/1.0/plugins
[info] Loading project definition from /tmp/test/project
[info] Loading settings for project test from build.sbt ...
[info] Set current project to ScalaKafkaStreamsDemo (in build file:/tmp/test/)
[info] Executing in batch mode. For better performance use sbt's shell
[info] Updating ...
[info] downloading https://repo1.maven.org/maven2/javax/ws/rs/javax.ws.rs-api/2.1.1/javax.ws.rs-api-2.1.1.jar ...
[info] [SUCCESSFUL ] javax.ws.rs#javax.ws.rs-api;2.1.1!javax.ws.rs-api.jar (861ms)
[info] Done updating.
[warn] There may be incompatibilities among your library dependencies; run 'evicted' to see detailed eviction warnings.
[success] Total time: 2 s, completed Dec 17, 2018, 5:45:42 PM
{noformat}
 

As far as what we can do in Kafka, I'm not sure...

The dependency chain for this dependency is:
{noformat}
$ sbt "whatDependsOn javax.ws.rs"
...
[info] javax.ws.rs:javax.ws.rs-api:2.1.1
[info] +-org.apache.kafka:connect-api:2.1.0
[info] | +-org.apache.kafka:connect-json:2.1.0
[info] | +-org.apache.kafka:kafka-streams:2.1.0
[info] | +-org.apache.kafka:kafka-streams-scala_2.12:2.1.0 [S]
[info] | | +-scalakafkastreamsdemo:scalakafkastreamsdemo_2.12:1.0 [S]
[info] | |
[info] | +-scalakafkastreamsdemo:scalakafkastreamsdemo_2.12:1.0 [S]
[info] |
[info] +-scalakafkastreamsdemo:scalakafkastreamsdemo_2.12:1.0 [S]
{noformat}
You can directly see the connect-api:2.1.0 pom file at: [http://central.maven.org/maven2/org/apache/kafka/connect-api/2.1.0/connect-api-2.1.0.pom]

 

In my web searches, I found [https://github.com/eclipse-ee4j/jaxrs-api/issues/572,] which seems to be the root cause: the javax.ws.rs-api pom doesn't specify "<packaging>jar</packaging>". 

The last comment on that posts suggests that we should change coordinates and update the dependency to fix the issue. But I don't know much about what's been happening with that project to know if this is really ok to do...

Since this seems to be a problem with Connect's dependency, I'm changing the label from "streams" to "connect", to hopefully get some attention from people who might be a little more familiar with javax/jakarta to comment.

 

Sorry for your troubles... Can you confirm if that workaround above works for you?

-john

> Bad dependency via SBT
> ----------------------
>
>                 Key: KAFKA-7741
>                 URL: https://issues.apache.org/jira/browse/KAFKA-7741
>             Project: Kafka
>          Issue Type: Bug
>          Components: core, KafkaConnect
>    Affects Versions: 2.1.0
>         Environment: Windows 10 professional, IntelliJ IDEA 2017.1
>            Reporter: sacha barber
>            Priority: Major
>
> I am using the Kafka-Streams-Scala 2.1.0 JAR.
> And if I create a new Scala project using SBT with these dependencies 
> {code}
> name := "ScalaKafkaStreamsDemo"
> version := "1.0"
> scalaVersion := "2.12.1"
> libraryDependencies += "org.apache.kafka" %% "kafka" % "2.0.0"
> libraryDependencies += "org.apache.kafka" % "kafka-clients" % "2.0.0"
> libraryDependencies += "org.apache.kafka" % "kafka-streams" % "2.0.0"
> libraryDependencies += "org.apache.kafka" %% "kafka-streams-scala" % "2.0.0"
> //TEST
> libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.5" % Test
> libraryDependencies += "org.apache.kafka" % "kafka-streams-test-utils" % "2.0.0" % Test
> {code}
> I get this error
>  
> {code}
> SBT 'ScalaKafkaStreamsDemo' project refresh failed
> Error:Error while importing SBT project:<br/>...<br/><pre>[info] Resolving jline#jline;2.14.1 ...
> [warn] [FAILED ] javax.ws.rs#javax.ws.rs-api;2.1.1!javax.ws.rs-api.${packaging.type}: (0ms)
> [warn] ==== local: tried
> [warn] C:\Users\sacha\.ivy2\local\javax.ws.rs\javax.ws.rs-api\2.1.1\${packaging.type}s\javax.ws.rs-api.${packaging.type}
> [warn] ==== public: tried
> [warn] https://repo1.maven.org/maven2/javax/ws/rs/javax.ws.rs-api/2.1.1/javax.ws.rs-api-2.1.1.${packaging.type}
> [info] downloading https://repo1.maven.org/maven2/org/apache/kafka/kafka-streams-test-utils/2.1.0/kafka-streams-test-utils-2.1.0.jar ...
> [info] [SUCCESSFUL ] org.apache.kafka#kafka-streams-test-utils;2.1.0!kafka-streams-test-utils.jar (344ms)
> [warn] ::::::::::::::::::::::::::::::::::::::::::::::
> [warn] :: FAILED DOWNLOADS ::
> [warn] :: ^ see resolution messages for details ^ ::
> [warn] ::::::::::::::::::::::::::::::::::::::::::::::
> [warn] :: javax.ws.rs#javax.ws.rs-api;2.1.1!javax.ws.rs-api.${packaging.type}
> [warn] ::::::::::::::::::::::::::::::::::::::::::::::
> [trace] Stack trace suppressed: run 'last *:ssExtractDependencies' for the full output.
> [trace] Stack trace suppressed: run 'last *:update' for the full output.
> [error] (*:ssExtractDependencies) sbt.ResolveException: download failed: javax.ws.rs#javax.ws.rs-api;2.1.1!javax.ws.rs-api.${packaging.type}
> [error] (*:update) sbt.ResolveException: download failed: javax.ws.rs#javax.ws.rs-api;2.1.1!javax.ws.rs-api.${packaging.type}
> [error] Total time: 8 s, completed 16-Dec-2018 19:27:21
> Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=384M; support was removed in 8.0</pre><br/>See complete log in <a href="file:/C:/Users/sacha/.IdeaIC2017.1/system/log/sbt.last.log">file:/C:/Users/sacha/.IdeaIC2017.1/system/log/sbt.last.log</a>
> {code}
> This seems to be a common issue with bad dependency from Kafka to javax.ws.rs-api.
> if I drop the Kafka version down to 2.0.0 and add this line to my SBT file this error goes away
> {code}
> libraryDependencies += "javax.ws.rs" % "javax.ws.rs-api" % "2.1" artifacts(Artifact("javax.ws.rs-api", "jar", "jar"))`
> {code}
>  
> However I would like to work with 2.1.0 version.
>  
>  



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)