frankiesardo / icepick

Android Instance State made easy
Eclipse Public License 1.0
3.75k stars 208 forks source link

Could not find icepick-processor.jar in jcenter() #120

Closed jasenmoloy closed 6 years ago

jasenmoloy commented 6 years ago

I've recently started getting dependency issues attempting to fetch Icepick and its dependencies. I've confirmed this issue appears on my machine as well as my build server. This is the error log:

Could not find icepick-processor.jar (frankiesardo:icepick-processor:3.2.0). Searched in the following locations: https://jcenter.bintray.com/frankiesardo/icepick-processor/3.2.0/icepick-processor-3.2.0.jar

Was icepick recently removed or modified in https://jcenter.bintray.com?

I'm on a very recent version of Gradle (4.5) and Android plugin (3.2.0-alpha07). For some reason Gradle isn't falling back to other repos (such as https://clojars.org/repo/) so it seems like it's getting some type of response from JFrog.

candeiasdan commented 6 years ago

+1 following this thread

wverdese commented 6 years ago

+1 here! If it may help, the problem is definitely on JFrog. Calling:

curl -I 'https://repo.jfrog.org/artifactory/libs-release-bintray/frankiesardo/icepick-processor/3.2.0/icepick-processor-3.2.0.jar?referrer'

the request randomly fails with:

HTTP/1.1 404 Not Found
Content-Type: application/json;charset=ISO-8859-1
Date: Fri, 11 May 2018 11:35:20 GMT
Server: nginx
X-Artifactory-Id: repo.jfrog.org
X-Artifactory-Node-Id: artrjo-m
X-Node: nginx-dedicated2e.prod-use1
Connection: keep-alive

We noticed that, when it fails, X-Artifactory-Node-Id: artrjo-m, while when it succeeds it's X-Artifactory-Node-Id: artrjo-s1. @frankiesardo Can you please report this malfunction to JFrog? I tried already but they ignored me, since I'm not hosting anything on their repo.jfrog.org.

jasenmoloy commented 6 years ago

As a current workaround, I downloaded the JARs and have Gradle point to a local folder. The links for each JAR and the problematic dependencies are as follows:

Icepick-3.2.0.jar - http://clojars.org/repo/frankiesardo/icepick/3.2.0/icepick-3.2.0.jar Icepick-processor-3.2.0.jar - http://clojars.org/repo/frankiesardo/icepick-processor/3.2.0/icepick-processor-3.2.0.jar quoin-0.1.2.jar - http://clojars.org/repo/quoin/quoin/0.1.2/quoin-0.1.2.jar scout-0.1.0.jar - http://clojars.org/repo/scout/scout/0.1.0/scout-0.1.0.jar slingshot-0.10.3.jar - http://clojars.org/repo/slingshot/slingshot/0.10.3/slingshot-0.10.3.jar

Note: Other sub-dependencies such as clojure and auto-service need to be fetched explicitly since Gradle is not aware of a JAR's dependencies. See the code sample below.

This is the Gradle dependencies you need to add if you want to point to local JARs

annotationProcessor 'org.clojure:clojure:1.7.0'
annotationProcessor 'com.google.auto.service:auto-service:1.0-rc2'
annotationProcessor fileTree(dir: 'libs/icepick-processor', include: ['*.jar'])
implementation fileTree(dir: 'libs/icepick', include: ['icepick-3.2.0.jar'])
or-dvir commented 6 years ago

same issue here!

IslamSalah commented 6 years ago

@jasenmoloy I'd like to refer that downloading the JARs locally causes a runtime exception "java.lang.IllegalStateException: Derived class did not call super.onRestoreInstanceState()" I'm not sure but this may reproduce the crash: 1) Enable do not keep activities from settings/Developer options. 2) Go from an activity using icepick to any other activity (so the current activity is destroyed). 3) Press back button (to have the activity recreated).

jasenmoloy commented 6 years ago

@IslamSalah That exception should not be related to having a local vs external JAR file. That exception message seems explicit that your Activity didn't call super.onRestoreInstanceState() in its overwritten method.

We use Icepick throughout our app and haven't seen the crashes you're describing. This is following your steps.

jasenmoloy commented 6 years ago

I'm now seeing the POM and JAR files in jcenter via https://jcenter.bintray.com/frankiesardo/icepick-processor/3.2.0/ and confirmed it the JAR is downloaded to my local Gradle cache.

Closing.