Java / Linux / Docker 101: java.lang.NoClassDefFoundError: java / hora / ZoneId

1

Estou tentando executar uma jarra dentro de uma janela de encaixe. Eu tomei os seguintes passos:

  1. docker do sudo pull java
  2. docker do sudo run -i -t java / bin / bash
  3. (no docker) curl -LO link
  4. java -jar atlas-1.4.1-standalone.jar

Estou recebendo o seguinte erro:

Exception in thread "main" java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at com.simontuffs.onejar.Boot.run(Boot.java:340)
        at com.simontuffs.onejar.Boot.main(Boot.java:166)
Caused by: java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
        at com.netflix.atlas.webapi.ApiSettings$.newDbInstance(ApiSettings.scala:33)
        at com.netflix.atlas.webapi.Main$$anon.configure(Main.scala:29)
        at com.netflix.atlas.akka.WebServer.start(WebServer.scala:37)
        at com.netflix.atlas.webapi.Main$.main(Main.scala:33)
        at com.netflix.atlas.webapi.Main.main(Main.scala)
        ... 6 more
Caused by: java.lang.NoClassDefFoundError: java/time/ZoneId
        at com.netflix.atlas.core.db.StaticDatabase.<init>(StaticDatabase.scala:33)
        ... 15 more
Caused by: java.lang.ClassNotFoundException: java.time.ZoneId
        at com.simontuffs.onejar.JarClassLoader.findClass(JarClassLoader.java:713)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
        at com.simontuffs.onejar.JarClassLoader.loadClass(JarClassLoader.java:630)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
        ... 16 more

root@17d3f6f54c1b:/# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
root@17d3f6f54c1b:/# echo $CLASSPATH
<not defined>

Eu acredito que a correção é dolorosamente simples, eu não tenho certeza do que é.

Obrigado antecipadamente!

    
por jhilden 30.01.2015 / 00:12

1 resposta

2

Este parece ser o java.time.ZoneId que foi introduzido no java 1.8. Você pode fazer java -version e javac -version no contêiner do Docker e / ou onde você o construiu.

Meu palpite é que você compilou em sua máquina local com o java 1.8 e depois o empurrou para o Docker com uma versão menor do java no container.

    
por JD Schmidt 30.01.2015 / 01:50