最近gradleを触りだして、自動で依存管理をしていたのですが、
先日以下のようなエラーが出て、どうしてもエラーが消えない現象がありました。
SEVERE: Unable to process Jar entry [com/ibm/icu/impl/data/LocaleElements_zh__PINYIN.class] from Jar [jar:file:/Users/tree/.gradle/caches/artifacts-15/filestore/com.ibm.icu/icu4j/2.6.1/jar/ec0b2437fa48825d7b046efafbe8d27343fe97b2/icu4j-2.6.1.jar!/] for annotations org.apache.tomcat.util.bcel.classfile.ClassFormatException: Invalid byte tag in constant pool: 60 at org.apache.tomcat.util.bcel.classfile.Constant.readConstant(Constant.java:133) at org.apache.tomcat.util.bcel.classfile.ConstantPool.<init>(ConstantPool.java:60) at org.apache.tomcat.util.bcel.classfile.ClassParser.readConstantPool(ClassParser.java:209) at org.apache.tomcat.util.bcel.classfile.ClassParser.parse(ClassParser.java:119) at org.apache.catalina.startup.ContextConfig.processAnnotationsStream(ContextConfig.java:2105) at org.apache.catalina.startup.ContextConfig.processAnnotationsJar(ContextConfig.java:1981) at org.apache.catalina.startup.ContextConfig.processAnnotationsUrl(ContextConfig.java:1947) at org.apache.catalina.startup.ContextConfig.processAnnotations(ContextConfig.java:1932) at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1326) at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:878) at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:369) at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119) at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5179) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901) at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877) at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:633) at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:657) at org.apache.catalina.startup.HostConfig$DeployDescriptor.run(HostConfig.java:1637) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334) at java.util.concurrent.FutureTask.run(FutureTask.java:166) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:722)
なんの事かさっぱり解らなかったんですが、どうもicu4j内の中国語をごにょごにょするクラスが存在しない、
というか構成がおかしいのが原因だそうで、2.8でfixしたそうです。
しかしgradleで最新の51.1に差し替えてもずっとエラーが出るのですが、
結局gradleのローカルファイルを削除したらエラーがでなくなりました。
localhost:icu4j tree$ pwd /Users/tree/.gradle/caches/artifacts-15/filestore/com.ibm.icu/icu4j localhost:icu4j tree$ ll total 0 drwxr-xr-x 3 tree staff 102B 5 10 01:43 2.6.1 localhost:icu4j tree$ rm -rf *
削除後に Gradle -> Refresh All で最新版に差し替えて、ようやくエラーがでなくなりました。
Gradleの事全然解ってませんが、参照されていないであろう2.6.1のフォルダが存在するだけでNGなんですね。
Mavenだとまた違った挙動になるのだろうか。
Gradle Effective Implementation Guide
- 作者: Hubert Klein Ikkink
- 出版社/メーカー: Packt Publishing
- 発売日: 2012/10/25
- メディア: Kindle版
- この商品を含むブログ (1件) を見る
Building and Testing With Gradle
- 作者: Tim Berglund,Matthew Mccullough,Hans Dockter
- 出版社/メーカー: Oreilly & Associates Inc
- 発売日: 2011/07/13
- メディア: ペーパーバック
- クリック: 7回
- この商品を含むブログ (7件) を見る