質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.53%
Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Gradle

Gradleは、ビルド自動化ツールです。 ソフトウェアパッケージやドキュメント、 または実際に何か他の種類のプロジェクトの構築、テスト、公開、展開などを自動化が出来ます

Kotlin

Kotlinは、ジェットブレインズ社のアンドリー・ブレスラフ、ドミトリー・ジェメロフが開発した、 静的型付けのオブジェクト指向プログラミング言語です。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Q&A

解決済

1回答

679閲覧

Androidアプリでminioのサーバにファイルをアップロードしたい

log.suzaki

総合スコア2

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Gradle

Gradleは、ビルド自動化ツールです。 ソフトウェアパッケージやドキュメント、 または実際に何か他の種類のプロジェクトの構築、テスト、公開、展開などを自動化が出来ます

Kotlin

Kotlinは、ジェットブレインズ社のアンドリー・ブレスラフ、ドミトリー・ジェメロフが開発した、 静的型付けのオブジェクト指向プログラミング言語です。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

0グッド

0クリップ

投稿2023/02/07 11:36

実現したいこと

Androidアプリでminioのサーバにファイルをアップロードしたい.

前提

AWSのライブラリを使用するのが正しいのかminioのライブラリを使用するのが正しいのかがわからないので両方トライしています.
この質問はAWSのライブラリを使用する方の質問です.
AWS-SDKを使用するパターン
https://docs.aws.amazon.com/ja_jp/sdk-for-java/v1/developer-guide/basics.html

発生している問題・エラーメッセージ

E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.post_awss3, PID: 5114 java.lang.NoClassDefFoundError: Failed resolution of: Ljavax/management/MBeanServerFactory; at com.amazonaws.jmx.MBeans.getMBeanServer(MBeans.java:111) at com.amazonaws.jmx.MBeans.registerMBean(MBeans.java:50) at com.amazonaws.jmx.SdkMBeanRegistrySupport.registerMetricAdminMBean(SdkMBeanRegistrySupport.java:27) at com.amazonaws.metrics.AwsSdkMetrics.registerMetricAdminMBean(AwsSdkMetrics.java:398) at com.amazonaws.metrics.AwsSdkMetrics.<clinit>(AwsSdkMetrics.java:359) at com.amazonaws.metrics.AwsSdkMetrics.addAll(AwsSdkMetrics.java:662) ......

該当のソースコード

kotlin

1import com.amazonaws.ClientConfiguration 2import com.amazonaws.auth.AWSStaticCredentialsProvider 3import com.amazonaws.auth.BasicAWSCredentials 4import com.amazonaws.client.builder.AwsClientBuilder 5import com.amazonaws.services.s3.AmazonS3 6import com.amazonaws.services.s3.AmazonS3ClientBuilder 7import com.amazonaws.services.s3.model.ObjectMetadata 8import com.amazonaws.services.s3.model.PutObjectRequest 9import java.io.File 10import java.io.FileInputStream 11 12class AmazonS3Client { 13 val accessKey = "アクセスキー" 14 val secretKey = "シークレットキー" 15 val credentials = BasicAWSCredentials(accessKey, secretKey) 16 val bucketName = "minioのバケットの名前" 17 val endpoint = "エンドポイント" 18 val clientConfiguration = ClientConfiguration() 19 20 private val s3Client: AmazonS3 = AmazonS3ClientBuilder.standard() 21 .withCredentials(AWSStaticCredentialsProvider(credentials)) 22 .withClientConfiguration(clientConfiguration) 23 .withEndpointConfiguration(AwsClientBuilder.EndpointConfiguration(endpoint, "us-south")) 24 .enablePathStyleAccess() 25 .build() 26 fun uploadCSV(filePass: String): String { 27 val objectMetadata = ObjectMetadata() 28 objectMetadata.contentType = "text/csv" 29 val file = File(filePass) 30 31 val putObjectRequest = PutObjectRequest(bucketName, file.name, FileInputStream(file), objectMetadata) 32 s3Client.putObject(putObjectRequest) 33 34 return s3Client.getUrl(bucketName, file.name).toString() 35 } 36}

gradle

1plugins { 2 id 'com.android.application' 3 id 'kotlin-android' 4 id 'kotlin-kapt' 5} 6 7android { 8 namespace 'com.example.post_awss3' 9 compileSdk 33 10 11 defaultConfig { 12 applicationId "com.example.post_awss3" 13 minSdk 31 14 targetSdk 33 15 versionCode 1 16 versionName "1.0" 17 18 testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" 19 } 20 21 buildTypes { 22 release { 23 minifyEnabled false 24 proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' 25 } 26 } 27 compileOptions { 28 sourceCompatibility JavaVersion.VERSION_1_8 29 targetCompatibility JavaVersion.VERSION_1_8 30 } 31 kotlinOptions { 32 jvmTarget = '1.8' 33 } 34 packagingOptions { 35 exclude 'mime.types' 36 exclude 'META-INF/DEPENDENCIES' 37 } 38} 39 40dependencies { 41 42 implementation 'androidx.core:core-ktx:1.9.0' 43 implementation 'androidx.appcompat:appcompat:1.6.0' 44 implementation 'com.google.android.material:material:1.8.0' 45 implementation 'androidx.constraintlayout:constraintlayout:2.1.4' 46 testImplementation 'junit:junit:4.13.2' 47 androidTestImplementation 'androidx.test.ext:junit:1.1.5' 48 androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1' 49 implementation platform('com.amazonaws:aws-java-sdk-bom:1.11.1000') 50 implementation 'com.amazonaws:aws-java-sdk-s3' 51 implementation 'com.ibm.cos:ibm-cos-java-sdk-s3:2.6.1' 52 implementation 'com.ibm.cos:ibm-cos-java-sdk-core:2.6.1' 53 54}

試したこと

まず,以下の記事を参考にbm-cos-java-sdk-s3:2.6.1とibm-cos-java-sdk-core:2.6.1をdependenciesに追加しました.
https://github.com/IBM/ibm-cos-sdk-java/issues/30
次にMBeanServerFactoryそのものをdependenciesに追加しました.
https://jar-download.com/artifacts/mx4j/mx4j-jmx/3.0.1/source-code/javax/management/MBeanServerFactory.java
↓実際に追加したライブラリ
implementation group: 'mx4j', name: 'mx4j-jmx', version: '3.0.1'

しかしこれは以下のエラーを出します.

E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.post_awss3, PID: 7662 java.lang.NoClassDefFoundError: Failed resolution of: Lmx4j/log/Log; at javax.management.MBeanServerFactory.getLogger(MBeanServerFactory.java:34) at javax.management.MBeanServerFactory.findMBeanServer(MBeanServerFactory.java:105) at com.amazonaws.jmx.MBeans.getMBeanServer(MBeans.java:111) at com.amazonaws.jmx.MBeans.registerMBean(MBeans.java:50) at com.amazonaws.jmx.SdkMBeanRegistrySupport.registerMetricAdminMBean(SdkMBeanRegistrySupport.java:27) at ....

次にmx4jを追加してみました.
https://mvnrepository.com/artifact/mx4j/mx4j/3.0.2
これは最新versionの3.0.2もmx4j-jmxと同じ3.0.1も同じエラーを出しました.
これはおそらく競合のエラーです.

* What went wrong: Execution failed for task ':app:checkDebugDuplicateClasses'. > A failure occurred while executing com.android.build.gradle.internal.tasks.CheckDuplicatesRunnable > Duplicate class javax.management.AndQueryExp found in modules mx4j-3.0.2 (mx4j:mx4j:3.0.2) and mx4j-jmx-3.0.1 (mx4j:mx4j-jmx:3.0.1) Duplicate class javax.management.Attribute found in modules mx4j-3.0.2 (mx4j:mx4j:3.0.2) and mx4j-jmx-3.0.1 (mx4j:mx4j-jmx:3.0.1) Duplicate class javax.management.AttributeChangeNotification found in modules mx4j-3.0.2 (mx4j:mx4j:3.0.2) and mx4j-jmx-3.0.1 (mx4j:mx4j-jmx:3.0.1) ....

補足情報(FW/ツールのバージョンなど)

Android Studio Electric Eel | 2022.1.1 Patch 1

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

minioのライブラリを使用する方で成功しました.
https://teratail.com/questions/p9epwfntvo3n7n

投稿2023/02/08 07:45

log.suzaki

総合スコア2

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.53%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問