Details
-
Bug
-
Status: Resolved
-
Major
-
Resolution: Fixed
-
v0.5.0
-
None
Description
Problems
1) Jersey conflict with Java8: https://java.net/jira/browse/JERSEY-2429
Caused by: java.lang.ArrayIndexOutOfBoundsException: 52264 at org.objectweb.asm.ClassReader.readClass(Unknown Source) ~[asm-3.1.jar:3.1] at org.objectweb.asm.ClassReader.accept(Unknown Source) ~[asm-3.1.jar:3.1] at org.objectweb.asm.ClassReader.accept(Unknown Source) ~[asm-3.1.jar:3.1] at com.sun.jersey.spi.scanning.AnnotationScannerListener.onProcess(AnnotationScannerListener.java:136) ~[jersey-server-1.17.1.jar:1.17.1] at com.sun.jersey.core.spi.scanning.uri.FileSchemeScanner$1.f(FileSchemeScanner.java:86) ~[jersey-core-1.17.1.jar:1.17.1] at com.sun.jersey.core.util.Closing.f(Closing.java:71) ~[jersey-core-1.17.1.jar:1.17.1] at com.sun.jersey.core.spi.scanning.uri.FileSchemeScanner.scanDirectory(FileSchemeScanner.java:83) ~[jersey-core-1.17.1.jar:1.17.1] at com.sun.jersey.core.spi.scanning.uri.FileSchemeScanner.scan(FileSchemeScanner.java:71) ~[jersey-core-1.17.1.jar:1.17.1] at com.sun.jersey.core.spi.scanning.PackageNamesScanner.scan(PackageNamesScanner.java:225) ~[jersey-core-1.17.1.jar:1.17.1] at com.sun.jersey.core.spi.scanning.PackageNamesScanner.scan(PackageNamesScanner.java:141) ~[jersey-core-1.17.1.jar:1.17.1] at com.sun.jersey.api.core.ScanningResourceConfig.init(ScanningResourceConfig.java:80) ~[jersey-server-1.17.1.jar:1.17.1] at com.sun.jersey.api.core.PackagesResourceConfig.init(PackagesResourceConfig.java:104) ~[jersey-server-1.17.1.jar:1.17.1] at com.sun.jersey.api.core.PackagesResourceConfig.<init>(PackagesResourceConfig.java:78) ~[jersey-server-1.17.1.jar:1.17.1]
Solution: Upgrade to jersey-1.19.1
2) asm library conflict: Exception in thread "eXtcos managed thread 1" java.lang.ArrayIndexOutOfBoundsException: 256
Exception in thread "eXtcos managed thread 1" java.lang.ArrayIndexOutOfBoundsException: 256 at org.objectweb.asm.ClassReader.readClass(Unknown Source) at org.objectweb.asm.ClassReader.accept(Unknown Source) at org.objectweb.asm.ClassReader.accept(Unknown Source) at net.sf.extcos.internal.JavaResourceAccessor.readClassData(JavaResourceAccessor.java:339) at net.sf.extcos.internal.JavaResourceAccessor.setResourceUrl(JavaResourceAccessor.java:309) at net.sf.extcos.internal.URLResource.getResourceAccessor(URLResource.java:98) at net.sf.extcos.internal.URLResource.isClass(URLResource.java:131) at net.sf.extcos.internal.RootFilter.filter(RootFilter.java:22) at net.sf.extcos.internal.AbstractChainedFilter.filter(AbstractChainedFilter.java:89) at net.sf.extcos.internal.ThreadingFilterInterceptor$1.run(ThreadingFilterInterceptor.java:48) at java.lang.Thread.run(Thread.java:745)
Solution: Resolve by excluding unnecessary `asm` dependencies
3) extcos scanner exception under java8 (asm 3/4.x support up to java 7 bytecode, while asm 5 support java8), unfortunately, seems latest version of extcos is 0.4b which support 4.0 only.
Exception in thread "eXtcos managed thread 1" java.lang.IllegalArgumentException at org.objectweb.asm.ClassReader.<init>(Unknown Source) at org.objectweb.asm.ClassReader.<init>(Unknown Source) at net.sf.extcos.internal.JavaResourceAccessor.readClassData(JavaResourceAccessor.java:362) at net.sf.extcos.internal.JavaResourceAccessor.setResourceUrl(JavaResourceAccessor.java:333) at net.sf.extcos.internal.URLResource.getResourceAccessor(URLResource.java:93) at net.sf.extcos.internal.URLResource.isClass(URLResource.java:126) at net.sf.extcos.internal.RootFilter.filter(RootFilter.java:22) at net.sf.extcos.internal.AbstractChainedFilter.filter(AbstractChainedFilter.java:89) at net.sf.extcos.internal.ThreadingFilterInterceptor$1.run(ThreadingFilterInterceptor.java:48) at java.lang.Thread.run(Thread.java:745)
Solution:
<dependency> <groupId>net.sf.extcos</groupId> <artifactId>extcos</artifactId> <exclusions> <exclusion> <groupId>org.ow2.asm</groupId> <artifactId>asm-all</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.ow2.asm</groupId> <artifactId>asm-all</artifactId> <version>5.0</version> </dependency>
Root Cause
- asm is incompatible among asm-3.0,asm-4.0,asm-5.0: the version of eagle before apache-eagle-v0.5 uses jersey v1.8 which requires asm-3.0, while eagle query engine requires asm-4.0 but storm requires asm-5.0.
- asm-3.0 and asm-4.0 is incompatible with jdk 8, but asm-5.0 does.
- eagle query engine depends on net.sf.extcos:extcos:0.4b" which support up to *asm-4.0
- jersey-1.8 is not compatible with java 8, but jersey-1.9 is.
Final Solution to support Java 8.
- Upgrade to jersey 1.9
- Exclude all asm dependencies and explicitly depend on only version "org.ow2.asm:asm-all:5.0".
Attachments
Issue Links
- links to