スリ飯屋Malankaのフリーエンジニアな日々

IT実務未経験から約1年、東京でフリーランスのRuby on Railsエンジニアに転職。約2年半、大阪中崎町でスリランカカレーの間借りしてました。フリーランスエンジニアになるためのノウハウ、スリランカの事を発信していきます。

【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

【Ruby on Jets】  dynamodb-localを実行した時に、 javaのバージョンが古くて エラー発生


こんにちは、mah(@RailsRubyMah6h)です。


このブログでは、

僕がIT未経験から約1年でフリーランスエンジニアになるまでの過程、

ノウハウなどを書いていきます。


今回は、

  • Ruby on Jetsで、dynamodb-localを実行した時に、javaのバージョンが古くて発生したエラー

についてです。



AWS Lambdaに手軽にアプリをデプロイ出来るFW、

Ruby on Jetsを使っています。


Railsのように扱えるので、自分的にはすごく使いやすいです。


下記の記事を参考に、

dynamodbを立ち上げようとしたのですが、

javaのバージョンが古くてエラーになったので、

その対処法を記しておきます。

qiita.com


起きたこと


$ 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が立ち上がることを確認しました。




以上、

  • Ruby on Jetsで、dynamodb-localを実行した時に、javaのバージョンが古くて発生したエラー

についてでした。


フリーランスエンジニアとして、RubyやRuby on Railsの案件を獲得する方法


最後に、

  • フリーランスエンジニアとして、RubyやRuby on Railsの案件を獲得する方法

を紹介します。


4つあります。


  1. 知人の繋がりで紹介してもらう

  2. Web上やSNSなどで直営業をかける

  3. 自分でWebサービスを立ち上げる

  4. フリーランス専門エージェントに紹介してもらう


色々ありますが、一番手っ取り早いのは、


  • 4. フリーランス専門エージェントに紹介してもらう

ですね。


登録しておくだけで、

自分にマッチした、RubyやRuby on Railsの案件を紹介してくれます。


中でも、

フォスターフリーランスという、

フリーランス専門エージェントを使うのがおすすめです。


f:id:mah666hhh:20200615083445p:plain


自分もフォスターフリーランスを使って、

フリーランスエンジニアとしてのキャリアをスタートさせました。


フォスターフリーランスを使うと、

自分の代わりに、

プロの営業さんが案件を探してくれます。


最初の内は、

自分で営業なんてとても出来ないので、

非常にありがたかったです。


しかも無料で利用できる。


参考までに、

自分がお世話になっているエージェントを2つご紹介しておきます。


話を聞くだけでもOKなので、

ぜひ利用してみてください。


フォスターフリーランス【案件保有数5000件以上。業界20年の超老舗】

無料でフォスターフリーランスに登録


下記の記事で、

フォスターフリーランスの特徴について解説しています。


www.malanka.tech




Rubyを学習するならこちら


Udemy という動画教材です。


はじめてのRuby on Rails入門-RubyとRailsを基礎から学びWebアプリケーションをネットに公開しよう




なんとUdemy は、

60%OFFのセールをやっている時もあります。


こまめにチェックして、

スキルアップを図りましょう★




また、

Ruby関連の過去記事は下記にありますので、

合わせてチェックしてみてください◎


Ruby カテゴリーの記事一覧 - スリ飯屋Malankaのフリーエンジニアな日々

www.malanka.tech




初めての方はこちらのオススメ記事もどうぞ


www.malanka.tech


www.malanka.tech


www.malanka.tech


www.malanka.tech


www.malanka.tech


また、

駆け出しエンジニアに向けてのnoteを3月17日にリリースしました。

note.com


活躍出来るエンジニアになるためのマインドを、

ギュッと詰め込んだ、「実践型note」になってます。


  • 「IT転職を成功させたい!」

という方は是非チェックしてみてください。






最後までお読み頂きありがとうございました★

もしよかったらTwiiterのフォローもお願いします★