gpt4 book ai didi

java - 在 Android Studio 中添加外部库时出现问题

转载 作者:太空狗 更新时间:2023-10-29 14:10:12 29 4
gpt4 key购买 nike

我正在使用 javax.mail 从我的 Activity 中发送邮件。为了开发这个应用,我使用了 Android Studio。

要使用此方法,需要 3 个 .jar 文件(ma​​il.jar、activation.jar 和 additionnal.jar)。我读过的所有信息都说将这 3 个文件放在 libs 文件夹中,将它们添加为库并在 gradle.build 中命名它们。

当我意识到没有为我显示“添加到库”选项时,我的第一个问题就来了。所以我尝试在模块设置中手动添加依赖项,并在 gradle.build 等中添加它们......但是这些方法中没有一种对我有用,我无法选择导入。

但最终我找到了一种乍一看似乎可行的方法。转到 Module Settings/app/dependencies,我选择 + 按钮并选择“Library dependencies”。然后我使用 Maven Central Search 并找到了这两个:

  • javax.mail:mail:1.5.0-b01
  • javax.activation:activation:1.1.1

然后我转到顶层 gradle.build 并添加:

allprojects {
repositories {
mavenCentral()
}
}

然后,在应用内部 gradle.build 中:

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:21.0.3'
compile 'javax.mail:mail:1.5.0-b01'
compile 'javax.activation:activation:1.1.1'
}

但即使这样,我也无法正常工作。它启动并且似乎运行良好,但是当要发送电子邮件时,应用程序崩溃并显示:

java.lang.NoClassDefFoundError: javax.activation.DataHandler
at com.myapp.mail.MailSender.sendMail(MailSender.java:64)
at com.myapp.TrackingService.sendEmail(TrackingService.java:341)
at com.myapp.TrackingService.doLocationUpdate(TrackingService.java:281)
at com.myapp.TrackingService.onStartCommand(TrackingService.java:82)
at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:2726)
at android.app.ActivityThread.access$2100(ActivityThread.java:144)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1302)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5146)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:732)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:566)
at dalvik.system.NativeStart.main(Native Method)

Update- 添加了 gradle.build 文件:

顶级 gradle.build:

buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:1.1.0'

// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}

allprojects {
repositories {
jcenter()
mavenCentral()
}
}

应用内部 gradle.build:

apply plugin: 'com.android.application'

android {
compileSdkVersion 21
buildToolsVersion "21.1.2"

defaultConfig {
applicationId "com.irvvin.trackme"
minSdkVersion 14
targetSdkVersion 21
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
sourceSets { main { res.srcDirs = ['src/main/res', 'src/main/res/values-v14'] } }

packagingOptions {
exclude 'META-INF/LICENSE.txt'
}
}

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:21.0.3'
compile 'javax.mail:mail:1.5.0-b01'
compile files('libs/activation.jar')

//Now I take "mail" from maveen and "activation" from library, but I have tried diferent
// combiations, such as selecting all from library (the imports where not showing) and
// all from maveen (works but shows this error).
//With the actual combination, also throws this same error.
}

最佳答案

因为您有 Jar 文件。因此,将这些 jar 文件放在您的 libs 文件夹中,并在您的 build.gradle(Module) 中添加以下内容。

dependencies {
compile files('libs/mail.jar')
compile files('libs/activation.jar')
compile files('libs/additionnal.jar')
}

关于java - 在 Android Studio 中添加外部库时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29629093/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com