
こんにちは、現役沖縄フリーランスエンジニアのmah(MaLanka)です。
このブログでは、
僕がIT未経験から約1年でフリーランスエンジニアになるまでの過程、
ノウハウなどを書いていきます。
今回は、
- Ruby on Jetsで、dynamodb-localを実行した時に、javaのバージョンが古くて発生したエラー
についてです。
AWS Lambdaに手軽にアプリをデプロイ出来るFW、
Ruby on Jetsを使っています。
Railsのように扱えるので、自分的にはすごく使いやすいです。
下記の記事を参考に、
dynamodbを立ち上げようとしたのですが、
javaのバージョンが古くてエラーになったので、
その対処法を記しておきます。
【Ruby on Jets】dynamodb-localを実行した時に、javaのバージョンが古くてエラー発生。Exception in thread "main" java.lang.UnsupportedClassVersionError: org/apache/logging/log4j/spi/ExtendedLogger : Unsupported major.minor version 52.0
起きたこと
$ dynamodb-local を実行すると、
下記のようなエラーが出ました。
290 jets-lambda master * $ dynamodb-local
Initializing DynamoDB Local with the following configuration:
Port: 8000
InMemory: false
DbPath: null
SharedDb: false
shouldDelayTransientStatuses: false
CorsParams: *
Exception in thread "main" java.lang.UnsupportedClassVersionError: org/apache/logging/log4j/spi/ExtendedLogger : Unsupported major.minor version 52.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(ClassLoader.java:637)
at java.lang.ClassLoader.defineClass(ClassLoader.java:621)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
at com.amazonaws.services.dynamodbv2.local.shared.logging.LogManager.<clinit>(LogManager.java:28)
at com.amazonaws.services.dynamodbv2.local.server.DynamoDBProxyServer.<clinit>(DynamoDBProxyServer.java:36)
at com.amazonaws.services.dynamodbv2.local.main.ServerRunner.createServer(ServerRunner.java:120)
at com.amazonaws.services.dynamodbv2.local.main.ServerRunner.createServerFromCommandLineArgs(ServerRunner.java:116)
at com.amazonaws.services.dynamodbv2.local.main.ServerRunner.main(ServerRunner.java:71)
原因
調べると、javaのバージョンが関係してそう。
java - AWS dynamoDB quick start not working - Unsupported major.minor version 51.0 - Stack Overflow
対処法
javaのバージョンを上げれば解決しそう。
手順
こちらの記事を参考に、
javaのバージョンを確認。
295 jets-lambda master * $ javac -version javac 1.6.0_65 296 jets-lambda master * $ java -version java version "1.6.0_65" Java(TM) SE Runtime Environment (build 1.6.0_65-b14-468) Java HotSpot(TM) 64-Bit Server VM (build 20.65-b04-468, mixed mode)
バージョンは1.6.0_65。
記事の手順通り、下記のコマンド実行。
$ brew tap AdoptOpenJDK/openjdk $ brew cask install adoptopenjdk8
再度バージョン確認。
$ java -version openjdk version "1.8.0_212" OpenJDK Runtime Environment (AdoptOpenJDK)(build 1.8.0_212-b03) OpenJDK 64-Bit Server VM (AdoptOpenJDK)(build 25.212-b03, mixed mode)
1.8.0_212に上がっていることを確認しました。
もう一度dynamodb-localを実行します。
$ dynamodb-local Initializing DynamoDB Local with the following configuration: Port: 8000 InMemory: false DbPath: null SharedDb: false shouldDelayTransientStatuses: false CorsParams: *
エラーが無く、
ローカル環境でdynamodbが立ち上がることを確認しました。