【備忘録】Android rosjavaを使ってるプロジェクトのビルドが通らなくなった対処方法
どうもこんにちは、
2024.9.9 rosjavaを使ってるAndroidプロジェクトのビルドが突然通らなくなってしまいました。(先月ぐらいまで普通にビルドできていたのに。。。)
対処方法を備忘録としてまとめておきます。
エラー内容
エラー内容は、jcenterからspringsource.org.apache.commons系のライブラリが見つからないというエラーのようです。
色々調べると、どうもjcenterは、2021年に廃止になったようです。
※jcenterとは・・・ライブラリの配布機能を備えたリポジトリサービスのこと。
対処方法
ライブラリの依存関係を調査する。
以下コマンドを実行し、問題担っているライブラリをどこが参照しているかを調べます。
./gradlew app:dependencies --configuration debugCompileClasspath
★私のMAC環境ではgradle、java?のバージョンが古いのか、なぜか上記でエラー・・・
Windows環境で調べると、org.ros.rosjava_bootstrap:message_generation:0.3.3のライブラリで、エラーのライブラリを参照していそう。
たしかに、org.ros.rosjava_bootstrap:message_generation:0.3.3のimplementationをコメントアウトすると上記エラーは出ませんが、ros java系のAPIが使えなくなってしまいます。
対応としては、エラーが出ている以下のjarファイルをネットからローカル上に落としてきて、ローカルのjarを参照させるように修正します。
◯問題となっているjar
com.springsource.org.apache.commons.codec-1.3.0.jar
com.springsource.org.apache.commons.io-1.4.0.jar
com.springsource.org.apache.commons.lang-2.4.0.jar
com.springsource.org.apache.commons.httpclient-3.1.0.jar
com.springsource.org.apache.commons.logging-1.1.1.jar
com.springsource.org.apache.commons.net-2.0.0.jar
問題になっているjarファイルを落としてくる
プロジェクトのapp内にlibsフォルダを作り、jarファイルを置きます。
build.gradleに以下を追記
1 2 3 4 5 6 7 8 9 |
dependencies { ・・・省略・・・ implementation files('libs/com.springsource.org.apache.commons.codec-1.3.0.jar') implementation files('libs/com.springsource.org.apache.commons.io-1.4.0.jar') implementation files('libs/com.springsource.org.apache.commons.lang-2.4.0.jar') implementation files('libs/com.springsource.org.apache.commons.httpclient-3.1.0.jar') implementation files('libs/com.springsource.org.apache.commons.logging-1.1.1.jar') implementation files('libs/com.springsource.org.apache.commons.net-2.0.0.jar') |
また、build.gradleのjcenterを廃止して、mavenCentral()を追加します。
※MavenCentralは、Javaのライブラリを保管してるリポジトリ。jcenterからMavenCentralに切り替えることが推奨されているようです。
1 2 3 4 5 |
repositories { google() // jcenter() mavenCentral() } |
一度、Invadelicate Cashesしてみました。
これでもまだjcenterからリポジトリを参照しているエラーが消えないので、build.gradleに以下を追加し、今回追加したライブラリのリポジトリを参照しないようにしました。
dependenciesの前に以下を追加しました。
1 2 3 4 5 6 7 8 |
configurations { all*.exclude group: 'org.apache.commons', module: 'com.springsource.org.apache.commons.httpclient' all*.exclude group: 'org.apache.commons', module: 'com.springsource.org.apache.commons.codec' all*.exclude group: 'org.apache.commons', module: 'com.springsource.org.apache.commons.io' all*.exclude group: 'org.apache.commons', module: 'com.springsource.org.apache.commons.lang' all*.exclude group: 'org.apache.commons', module: 'com.springsource.org.apache.commons.logging' all*.exclude group: 'org.apache.commons', module: 'com.springsource.org.apache.commons.net' } |
これでなんとかビルドエラーが消えました。
最後に
とりあえず、個人的な備忘録としてまとめておきます。もっと良い解決方法があるかもしれません。。
結構、rosjavaを使ってるプロジェクトがあるので、大変です。
やっぱり外部のライブラリを多用するとたまにこういうことになるので気をつけないといけないですね。。。
それでは!!
スポンサーリンク