こんにちは。AIチームの日比野です。
本当は今回の記事のタイトルは
Python/Kerasで学習させたモデルをJavaで動かしたら早くなるってマジ?
になるはずだったんですが、掲題の通りのことが起きてしまったので先にこれを書いておきます。最終的にはシンプルな問題だったのですが、たどり着くまでに結構時間がかかったので同じ問題に直面した方がサッと解決できることを祈ります。
※Python・機械学習・DeepLearning ・DL4Jについては次回記事でお話しします。
目次
前提
- OS:Windows 10
- 導入したもの:Eclipse Pleiades All in One 2019-12-java
- 状態:現PCにJava開発環境初構築(普段Pythonしか使わないので)
- 筆者Javaスキル:新人研修 + 実務半年くらいの初心者
- ネットワーク環境:インターネットへは社内プロキシ経由(原因)
- プロキシ環境外でもエラーが出る(詰まった原因)
発生した現象
Mavenプロジェクトを作成した時点で以下のようなエラーが発生しました。
1 2 3 4 5 6 |
ビルド中にエラーが発生しました。 プロジェクト 'Test' でビルダー 'Maven プロジェクト・ビルダー' の実行中にエラーが発生しました。 ビルド・プランを計算できませんでした: Plugin org.apache.maven.plugins:maven-resources-plugin:2.6 or one of its dependencies could not be resolved: Failed to read artifact descriptor for org.apache.maven.plugins:maven-resources-plugin:jar:2.6 Plugin org.apache.maven.plugins:maven-resources-plugin:2.6 or one of its dependencies could not be resolved: Failed to read artifact descriptor for org.apache.maven.plugins:maven-resources-plugin:jar:2.6 ビルド・プランを計算できませんでした: Plugin org.apache.maven.plugins:maven-resources-plugin:2.6 or one of its dependencies could not be resolved: Failed to read artifact descriptor for org.apache.maven.plugins:maven-resources-plugin:jar:2.6 Plugin org.apache.maven.plugins:maven-resources-plugin:2.6 or one of its dependencies could not be resolved: Failed to read artifact descriptor for org.apache.maven.plugins:maven-resources-plugin:jar:2.6 |
結論
プロキシ問題でした。
インターネット接続の際に介している社内プロキシ用の設定が適切に行えていませんでした。MavenはEclipseとは別の設定ファイルを見ているようなので、それを作成して設定内容を記入すればOKです。
手順
- C:\Users\ログオンユーザ\.m2\settings.xml ファイルを作成
-
プロキシ設定を記入
12345678910111213141516<settings><proxies><proxy><active>true</active><protocol>http</protocol><host>httpproxy.example.com</host><port>8080</port></proxy><proxy><active>true</active><protocol>https</protocol><host>httpsproxy.example.com</host><port>8080</port></proxy></proxies></settings>
以上です!
念のため.m2フォルダにあるrepositoryフォルダを削除した方が良いと思います。
試したこと&はまった理由
さすがに味気なさすぎるので、そこまでに試したことを記載しようと思います。全て「これやったら解決した」という方がいる方法なので、結論で治らなかった方はお試しいただければと思います。
1.プロキシ設定の確認
最初は確認からです。Mavenとは関係なかったのですが、Eclipse自体のプロキシ設定を確認します。
ウィンドウ→設定 から
①フィルターに「proxy」と入力し
②ネットワーク接続をクリック
アクティブ・プロバイダーがネイティブになっている場合、システムのプロキシ設定が反映されているはずです。
確認結果としては「プロキシ設定はされている」と判断しました。
2.更新の確認
m2eコネクタのバージョンが古い場合にも起こるそうです。
ヘルプ→更新の確認 をクリックします。
本体をダウンロードしたばかりなので私は更新はありませんでした。
なお、利用可能なソフトウェアサイトの参照先が古い場合があるそうです。
設定から
①フィルターにソフトウェアと入力し、
②使用可能なソフトウェア を選択
③それぞれの項目を選択し、再ロードを押下
することで、参照先を更新することができます。
3. プロキシを経由せずに接続
これがなぜ失敗したのか未だにわかっておりません……
原因切り分けのため、外出時用のPocket wifiを用いて、社内プロキシを通さずにやってみました。
「1.プロキシ設定の確認」の手順でプロキシ設定画面へ行き、プロキシ設定を変更し、Mavenプロジェクトを作成したのですが、同様のエラーが発生しました。
Eclipseの再起動が必要だったのかな……?
4. pluginManagementタグの挿入
eclipse – How to solve Plugin execution not covered by lifecycle configuration" for Spring Data Maven Builds – Stack Overflowを参考にpluginManagementタグを挿入しました。
効果はありませんでした。
5. 英語版Eclipseの導入
Pleiadesに問題があるのかと考え、本家Eclipseのダウンロードページからダウンロード・インストールを行いました。
結果は変わりませんでした……
6. 今更mvnのバージョンを確認(しようとする)
mvnのバージョンによっては、jdkのバージョン違いが発生する場合があります。そのため、mvnのバージョンを確認しようとしました。
確認失敗しているので、参考にはなりません。
ターミナルを開く→ローカルターミナルを選択
mvn -versionを実行
1 2 3 |
C:\pleiades\workspace\Test>mvn -version 'mvn' はは、、内内部部ココママンンドドままたたはは外外部部ココママンンドド、、 操操作作可可能能ななププロロググララムムままたたははババッッチチ フファァイイルルととししてて認認識識さされれてていいまませせんん。 |
バグ技使った時のNPCのセリフみたいになってしまいました。どうやらここからは実行できないようです。
7. settings.xmlの作成
→結論
実は問題が発生した時からslackのtimes(社内Twitterみたいな扱い)に投稿していたのですが、そこから結論の方法を教えていただきました。ちょうど諦めてEclipse外で導入しちゃおうと思い、Path通したりしていたところなので大変助かりました。社内の知識共有って大事ですね!
おわりに
ようやくJavaの開発環境が整ったため、本当にやりたかったことに取り掛かれます!
実行環境をPython→Javaにした時の速度変化を測定してお伝えしようと思いますのでお楽しみに!
執筆者プロフィール
-
入社して半年間ロボコン活動に専念。少しのJavaエンジニア期間を経てデータ分析や機械学習、Deep Learningをテーマに勤労しております。
昔取った杵柄を摩耗させつつ新たな支えを求めて試行錯誤中。
この執筆者の最新記事
- Pick UP!2020.10.30Python/Kerasで学習させたモデルをJavaで動かすだけじゃ速くならなかった
- ITコラム2020.08.04DL4Jを使うためにEclipseでMaven使おうとして困ったら
- AI2019.11.29AIの検証・開発を行うときに必要なハードウェア条件とは?
- AI2019.08.05Google Colaboratoryの無料GPU環境を使ってみた