2016-09-10 2 views
1

Cloud Bigtable에 연결하려고합니다. 그러나 netty-tcnative과 관련된 문제가 발견되지 않습니다.Google Cloud Bigtable Java 클라이언트 - tcnative 오류

메이븐 의존성 :

<dependency> 
    <groupId>com.google.cloud.bigtable</groupId> 
    <artifactId>bigtable-hbase-1.2</artifactId> 
    <version>0.9.2</version> 
</dependency> 

<dependency> 
    <groupId>io.netty</groupId> 
    <artifactId>netty-tcnative-boringssl-static</artifactId> 
    <version>1.1.33.Fork19</version> 
</dependency> 

오류 출력 :

ERROR 2016-09-09 22:26:00,969 [main] com.google.cloud.bigtable.grpc.BigtableSession: Neither Jetty ALPN nor OpenSSL are available. OpenSSL unavailability cause: 
java.lang.IllegalArgumentException: Failed to load any of the given libraries: [netty-tcnative-osx-x86_64, netty-tcnative]  
Exception in thread "BigtableSession-startup-2" java.lang.ExceptionInInitializerError 
at com.google.cloud.bigtable.grpc.BigtableSession$3.run(BigtableSession.java:194) 
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:745) 
Caused by: java.lang.IllegalStateException: zip file closed 
at java.util.zip.ZipFile.ensureOpen(ZipFile.java:634) 
at java.util.zip.ZipFile.getEntry(ZipFile.java:305) 
at java.util.jar.JarFile.getEntry(JarFile.java:227) 
at java.util.jar.JarFile.getJarEntry(JarFile.java:210) 
at sun.misc.URLClassPath$JarLoader.getResource(URLClassPath.java:840) 
at sun.misc.URLClassPath.getResource(URLClassPath.java:199) 
at java.net.URLClassLoader$1.run(URLClassLoader.java:358) 
at java.net.URLClassLoader$1.run(URLClassLoader.java:355) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.net.URLClassLoader.findClass(URLClassLoader.java:354) 
at org.mule.module.launcher.FineGrainedControlClassLoader.findClass(FineGrainedControlClassLoader.java:175) 
at org.mule.module.launcher.MuleApplicationClassLoader.findClass(MuleApplicationClassLoader.java:134) 
at org.mule.module.launcher.FineGrainedControlClassLoader.loadClass(FineGrainedControlClassLoader.java:119) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:358) 
at com.google.bigtable.repackaged.io.netty.util.concurrent.MultithreadEventExecutorGroup.<init>(MultithreadEventExecutorGroup.java:36) 
at com.google.bigtable.repackaged.io.netty.util.concurrent.MultithreadEventExecutorGroup.<init>(MultithreadEventExecutorGroup.java:58) 
at com.google.bigtable.repackaged.io.netty.util.concurrent.MultithreadEventExecutorGroup.<init>(MultithreadEventExecutorGroup.java:47) 
at com.google.bigtable.repackaged.io.netty.channel.MultithreadEventLoopGroup.<init>(MultithreadEventLoopGroup.java:58) 
at com.google.bigtable.repackaged.io.netty.channel.nio.NioEventLoopGroup.<init>(NioEventLoopGroup.java:77) 
at com.google.bigtable.repackaged.io.netty.channel.nio.NioEventLoopGroup.<init>(NioEventLoopGroup.java:72) 
at com.google.bigtable.repackaged.io.netty.channel.nio.NioEventLoopGroup.<init>(NioEventLoopGroup.java:59) 
at com.google.cloud.bigtable.grpc.BigtableSessionSharedThreadPools.init(BigtableSessionSharedThreadPools.java:85) 
at com.google.cloud.bigtable.grpc.BigtableSessionSharedThreadPools.<init>(BigtableSessionSharedThreadPools.java:77) 
at com.google.cloud.bigtable.grpc.BigtableSessionSharedThreadPools.<clinit>(BigtableSessionSharedThreadPools.java:45) 
... 4 more 
Exception in thread "BigtableSession-startup-1" java.lang.IllegalStateException: zip file closed 
at java.util.zip.ZipFile.ensureOpen(ZipFile.java:634) 
at java.util.zip.ZipFile.getEntry(ZipFile.java:305) 
at java.util.jar.JarFile.getEntry(JarFile.java:227) 
at java.util.jar.JarFile.getJarEntry(JarFile.java:210) 
at sun.misc.URLClassPath$JarLoader.getResource(URLClassPath.java:840) 
at sun.misc.URLClassPath.getResource(URLClassPath.java:199) 
at java.net.URLClassLoader$1.run(URLClassLoader.java:358) 
at java.net.URLClassLoader$1.run(URLClassLoader.java:355) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.net.URLClassLoader.findClass(URLClassLoader.java:354) 
at org.mule.module.launcher.FineGrainedControlClassLoader.findClass(FineGrainedControlClassLoader.java:175) 
at org.mule.module.launcher.MuleApplicationClassLoader.findClass(MuleApplicationClassLoader.java:134) 
at org.mule.module.launcher.FineGrainedControlClassLoader.loadClass(FineGrainedControlClassLoader.java:119) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:358) 
at com.google.bigtable.repackaged.com.google.api.client.http.javanet.NetHttpTransport$Builder.trustCertificates(NetHttpTransport.java:270) 
at com.google.bigtable.repackaged.com.google.api.client.googleapis.javanet.GoogleNetHttpTransport.newTrustedTransport(GoogleNetHttpTransport.java:55) 
at com.google.cloud.bigtable.config.CredentialFactory.getHttpTransport(CredentialFactory.java:94) 
at com.google.cloud.bigtable.grpc.BigtableSession$2.run(BigtableSession.java:183) 
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:745) 

답변

2

이 문제는 뮬의 클래스 로더 때문. Mule은 자체 클래스 로더에서 각 앱을 실행합니다. 이것을 앱 클래스 로더보다는 Mule의 공통 클래스 로더 (java.class.path)로 옮길 필요가있다. BigTable 클라이언트 라이브러리와 tcnative가 동일한 클래스 경로에 있는지 확인합니다.

이 문제는 비슷한 클래스 로더 패턴을 따르므로 Tomcat과 같은 다른 컨테이너에서 발생합니다.

+1

아래 내용을 mule-deploy.properties에 추가하면 부모가 아닌 fine grain class loader를 사용하여 클래스 로더 문제를 해결할 수 있습니다. loader.override = io.netty, org.apache.tomcat, com.google – mnouh1

+0

이 문제를 해결할 수있어서 기쁩니다. –

관련 문제