Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Compilation problems when using GenericContainer #11

Closed
zaharidichev opened this issue Dec 8, 2017 · 17 comments
Closed

Compilation problems when using GenericContainer #11

zaharidichev opened this issue Dec 8, 2017 · 17 comments

Comments

@zaharidichev
Copy link

@dimafeng

The moment I touch GenericContainer class I get the following errors:

[error] Class org.testcontainers.shaded.javax.annotation.CheckForNull not found - continuing with a stub.
[error] Class org.testcontainers.shaded.javax.annotation.CheckForNull not found - continuing with a stub.
[error] Class org.testcontainers.shaded.javax.annotation.CheckForNull not found - continuing with a stub.

[error] Class org.testcontainers.shaded.javax.annotation.CheckForNull not found - continuing with a stub.
[error] Class org.testcontainers.shaded.javax.annotation.CheckForNull not found - continuing with a stub.
[error] Class org.testcontainers.shaded.javax.annotation.CheckForNull not found - continuing with a stub.

Scala Version: 2.11.8
Sbt version: 0.13.8

Have tried changing scala and sbt versions without much success. This error really does not tell me much of what I need (e.g. where is this class needed at all ?). Is this some conflict with other libraries. For example is lombock's NonNull getting mixed up with findbug's NonNull. If that is the case I have excluded the latter dependency but still get errors. A bit of help will be greatly appreciated

@dimafeng
Copy link
Collaborator

dimafeng commented Dec 8, 2017

Hi @zaharidichev
I'll take a look tonight or tomorrow.

@zaharidichev
Copy link
Author

Thanks a lot. It really is causing me quite a lot of headache :(

@dimafeng
Copy link
Collaborator

dimafeng commented Dec 9, 2017

@zaharidichev could you please show the list of your dependencies and their versions?

@zaharidichev
Copy link
Author

@dimafeng Thanks for looking into that. Following is a list of the dependencies.

ch.qos.logback.logback.classic.1.1.1
ch.qos.logback.logback.core.1.1.1
com.beust.jcommander.1.12
com.dimafeng.testcontainers.scala.0.11.0
com.fasterxml.jackson.core.jackson.annotations.2.3.2
com.fasterxml.jackson.core.jackson.annotations.2.7.8
com.fasterxml.jackson.core.jackson.core.2.3.2
com.fasterxml.jackson.core.jackson.core.2.7.8
com.fasterxml.jackson.core.jackson.databind.2.3.2
com.fasterxml.jackson.core.jackson.databind.2.7.8
com.fasterxml.jackson.datatype.jackson.datatype.jdk8.2.7.8
com.fasterxml.jackson.datatype.jackson.datatype.jsr310.2.7.8
com.github.fakemongo.fongo.2.0.11
com.github.jnr.jffi.1.2.15
com.github.jnr.jffi.1.2.15.native
com.github.jnr.jnr.constants.0.9.8
com.github.jnr.jnr.ffi.2.1.4
com.github.jnr.jnr.posix.3.0.41
com.github.jnr.jnr.x86asm.1.0.2
com.github.nscala.time.nscala.time.1.0.0
com.google.guava.guava.18.0
com.googlecode.disruptor.disruptor.2.10.4
com.kohlschutter.junixsocket.junixsocket.common.2.0.4
com.kohlschutter.junixsocket.junixsocket.native.common.2.0.4
com.twitter.scrooge.core.3.17.0
com.typesafe.akka.akka.actor.2.3.4
com.typesafe.akka.akka.testkit.2.3.4
com.typesafe.config.1.2.1
com.typesafe.config.1.3.0
com.typesafe.play.play.datacommons.2.3.10
com.typesafe.play.play.datacommons.2.5.10
com.typesafe.play.play.functional.2.3.10
com.typesafe.play.play.functional.2.5.10
com.typesafe.play.play.iteratees.2.3.10
com.typesafe.play.play.iteratees.2.5.10
com.typesafe.play.play.json.2.3.10
com.typesafe.play.play.json.2.5.10
com.vividsolutions.jts.1.13
commons.cli.commons.cli.1.1
commons.codec.commons.codec.1.10
commons.io.commons.io.2.5
commons.lang.commons.lang.2.5
commons.lang.commons.lang.2.6
de.grundid.opendatalab.geojson.jackson.1.2
joda.time.joda.time.2.3
joda.time.joda.time.2.9.6
junit.junit.4.12
org.apache.commons.commons.compress.1.12
org.apache.commons.commons.lang3.3.3.2
org.apache.thrift.libthrift.0.8.0
org.aspectj.aspectjrt.1.8.6
org.beanshell.bsh.2.0b4
org.bouncycastle.bcprov.jdk15on.1.54
org.hamcrest.hamcrest.core.1.3
org.jetbrains.annotations.13.0
org.joda.joda.convert.1.6
org.joda.joda.convert.1.8.1
org.mockito.mockito.all.1.9.5
org.mongodb.casbah.commons.3.1.1
org.mongodb.casbah.core.3.1.1
org.mongodb.casbah.query.3.1.1
org.mongodb.mongo.java.driver.3.2.2
org.mozilla.rhino.1.7.7.1
org.ow2.asm.asm.5.0.3
org.ow2.asm.asm.analysis.5.0.3
org.ow2.asm.asm.commons.5.0.3
org.ow2.asm.asm.tree.5.0.3
org.ow2.asm.asm.util.5.0.3
org.rnorth.duct.tape.duct.tape.1.0.6
org.rnorth.tcp.unix.socket.proxy.1.0.1
org.rnorth.visible.assertions.visible.assertions.2.0.0
org.scala.lang.modules.scala.parser.combinators.1.0.4
org.scala.lang.modules.scala.xml.1.0.5
org.scala.lang.scala.library.8
org.scala.lang.scala.reflect.1
org.scala.lang.scala.reflect.7
org.scala.lang.scala.reflect.8
org.scala.sbt.test.interface.1.0
org.scala.stm.scala.stm.0.7
org.scalacheck.scalacheck.1.11.3
org.scalactic.scalactic.3.0.1
org.scalatest.scalatest.3.0.1
org.scijava.native.lib.loader.2.0.2
org.scoverage.scalac.scoverage.plugin.1.1.0
org.scoverage.scalac.scoverage.runtime.1.1.0
org.slf4j.jcl.over.slf4j.1.7.21
org.slf4j.slf4j.api.1.7.13
org.slf4j.slf4j.api.1.7.25
org.slf4j.slf4j.ext.1.7.25
org.testcontainers.testcontainers.1.4.3
org.testng.testng.6.1.1
org.yaml.snakeyaml.1.6
org.zeroturnaround.zt.exec.1.8

@dimafeng
Copy link
Collaborator

@zaharidichev
I checked codebase of org.testcontainers.testcontainers.1.4.3 and didn't find any usages of the org.testcontainers.shaded.javax.annotation.CheckForNull as well as there are no usages in testcontainers-scala.
Could you please try to switch to a DEBUG level of compilation logging? The answer may be there, we need to find out where that class is accessed from.

@zaharidichev
Copy link
Author

zaharidichev commented Dec 10, 2017

I did try setting:

scalacOptions ++= Seq("-unchecked", "-feature", "-explaintypes", "-print-types")

However that did not display any additional information. Quite strange. Just the same old error. Something is getting severely mixed up on the compiler level. This type does not even exist. I do not understand what and why is trying to access it.

@dimafeng
Copy link
Collaborator

I'll try to create an SBT project to reproduce the issue.

@zaharidichev
Copy link
Author

@dimafeng
Interestingly enough, we are using your library in another project and it does not show such problems. I am not sure what is so special with this one and this set of dependencies that causes so much headache. Same version of scala, same version of sbt

@zaharidichev
Copy link
Author

zaharidichev commented Dec 11, 2017

Right...
So @dimafeng running the compiler in verbose mode yields the following:

[info] [loaded package loader jackson in 0ms]
[info] [loaded package loader annotation in 0ms]
[info] [loaded package loader javax in 0ms]
[error] Class org.testcontainers.shaded.javax.annotation.CheckForNull not found - continuing with a stub.
[error] Class org.testcontainers.shaded.javax.annotation.CheckForNull not found - continuing with a stub.
[error] Class org.testcontainers.shaded.javax.annotation.CheckForNull not found - continuing with a stub.
[info] [loaded class file /Users/zahari/.ivy2/cache/org.testcontainers/testcontainers/jars/testcontainers-1.4.3.jar(com/github/dockerjava/api/command/InspectContainerResponse.class) in 2ms]
[info] [loaded package loader traits in 0ms]

This is happening right before the loader picks up InspectContainerResponse. Looking a bit further into that class, it looks like (an excerpt):

import org.testcontainers.shaded.com.fasterxml.jackson.annotation.JsonIgnore;
import org.testcontainers.shaded.com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import org.testcontainers.shaded.com.fasterxml.jackson.annotation.JsonProperty;
import org.testcontainers.shaded.javax.annotation.CheckForNull; <----- this guy here !

@JsonIgnoreProperties(
    ignoreUnknown = true
)
public class InspectContainerResponse {
    @JsonProperty("Args")
    private String[] args;
    @JsonProperty("Config")

There is no such class org.testcontainers.shaded.javax.annotation.CheckForNull in the test containers jar on my classpath. For reference, I am currently running that with:

  • testcontainers-scala_2.110.12.0.jar
  • testcontainers-1.4.3.jar

Seems like they missed something while shading the javax or I am getting confused somehow

@dimafeng
Copy link
Collaborator

@zaharidichev sorry for the late response. This is interesting.

@rnorth @bsideup do you guys know where org.testcontainers.shaded.javax.annotation.CheckForNull should come from?

@bsideup
Copy link
Member

bsideup commented Dec 12, 2017

@dimafeng I think I know where it comes from... Not related to testcontainers-scala, we need to fix that in testcontainers-core.

@zaharidichev thanks for reporting!

@zaharidichev
Copy link
Author

@bsideup Is there any estimation of when would that get fixed so I can pull in a snapshot at least. Alternatively I can give yo a hand and prepare a PR for it.

@ljkr
Copy link

ljkr commented Jan 2, 2018

I have the same problem.
@zaharidichev, did you fixed or worked-around the issue on your side?

@dimafeng
Copy link
Collaborator

dimafeng commented Jan 2, 2018

@ljkr sorry to hear that. It seems that issue was fixed in the latest version of testcontainers-java. I'll release a new version of testcontainers-scala with that fix later today.

@dimafeng
Copy link
Collaborator

dimafeng commented Jan 2, 2018

@ljkr @zaharidichev please try version 0.13.0

@ljkr
Copy link

ljkr commented Jan 2, 2018

@dimafeng the same problem with 0.13.0

org.testcontainers:testcontainers does not contain dependency on jsr-305 where CheckForNull comes from.

So adding jsr-305 (see below) to the project should fix the issue.

diff --git a/core/pom.xml b/core/pom.xml
index 00cc48d..f3eadf8 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -27,6 +27,12 @@
             <version>1.7.25</version>
         </dependency>
 
+        <dependency>
+            <groupId>com.google.code.findbugs</groupId>
+            <artifactId>jsr305</artifactId>
+            <version>3.0.2</version>
+        </dependency>
+
         <dependency>
             <groupId>com.github.docker-java</groupId>
             <artifactId>docker-java</artifactId>
@@ -222,7 +228,7 @@
                             <include>org.apache.httpcomponents:*</include>
                             <include>org.glassfish.*:*</include>
                             <include>org.aopalliance.*:*</include>
-                            <include>javax.annotation:*</include>
+                            <include>com.google.code.findbugs:*</include>
                             <include>javax.inject:*</include>
                             <include>javax.ws.rs:*</include>
                             <include>com.fasterxml.*:*</include>

@dimafeng
Copy link
Collaborator

dimafeng commented Feb 3, 2018

@ljkr @zaharidichev should be fixed in testcontainers-scala 0.14.0, please try - testcontainers/testcontainers-java#563 was released in testcontainers-java 1.6.0

@dimafeng dimafeng closed this as completed Feb 3, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants