Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/234.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何修复Android上海绵城堡的错误:找不到类java.awt.datatransfer.DataFlavor_Java_Android_Email_Bouncycastle_Spongycastle - Fatal编程技术网

如何修复Android上海绵城堡的错误:找不到类java.awt.datatransfer.DataFlavor

如何修复Android上海绵城堡的错误:找不到类java.awt.datatransfer.DataFlavor,java,android,email,bouncycastle,spongycastle,Java,Android,Email,Bouncycastle,Spongycastle,我使用lib-Spongy-Castle在Android上对邮件进行签名和加密 当我运行我的应用程序时,它返回以下错误: 11-13 08:54:11.867: E/dalvikvm(13188): Could not find class '[Ljava.awt.datatransfer.DataFlavor;', referenced from method org.spongycastle.mail.smime.handlers.multipart_signed.<clinit>

我使用lib-Spongy-Castle在Android上对邮件进行签名和加密

当我运行我的应用程序时,它返回以下错误:

11-13 08:54:11.867: E/dalvikvm(13188): Could not find class '[Ljava.awt.datatransfer.DataFlavor;', referenced from method org.spongycastle.mail.smime.handlers.multipart_signed.<clinit>
11-13 08:54:11.890: E/AndroidRuntime(13188): FATAL EXCEPTION: main
11-13 08:54:11.890: E/AndroidRuntime(13188): java.lang.VerifyError: org.spongycastle.mail.smime.handlers.multipart_signed
11-13 08:54:11.890: E/AndroidRuntime(13188):    at java.lang.Class.newInstanceImpl(Native Method)
11-13 08:54:11.890: E/AndroidRuntime(13188):    at java.lang.Class.newInstance(Class.java:1409)
11-13 08:54:11.890: E/AndroidRuntime(13188):    at javax.activation.MailcapCommandMap.getDataContentHandler(MailcapCommandMap.java:609)
11-13 08:54:11.890: E/AndroidRuntime(13188):    at javax.activation.MailcapCommandMap.createDataContentHandler(MailcapCommandMap.java:563)
11-13 08:54:11.890: E/AndroidRuntime(13188):    at javax.activation.DataHandler.getDataContentHandler(DataHandler.java:626)
11-13 08:54:11.890: E/AndroidRuntime(13188):    at javax.activation.DataHandler.writeTo(DataHandler.java:329)
11-13 08:54:11.890: E/AndroidRuntime(13188):    at javax.mail.internet.MimeBodyPart.writeTo(MimeBodyPart.java:1403)
11-13 08:54:11.890: E/AndroidRuntime(13188):    at javax.mail.internet.MimeMessage.writeTo(MimeMessage.java:1745)
11-13 08:54:11.890: E/AndroidRuntime(13188):    at javax.mail.internet.MimeMessage.writeTo(MimeMessage.java:1721)
(链接:)

我认为它必须导入包java.awt,我将rt.jar(包括java.awt.*)导入到我的项目中,但它仍然存在这个错误

我修复了我的错误:
+我下载了
+将行“import java.awt.datatransfer.DataFlavor;”替换为“import myjava.awt.datatransfer.DataFlavor;”(包myjava.awt.datatransfer包含在中)
+重建海绵城堡库
+使用新的spongycastle库,我成功地解决了这个问题:

0)在邮件包上运行BEN-spongy.sh脚本(来自“海绵脚本”分支) 1) 在mail/src/main/

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.spongycastle">
</manifest>
3) 在处理程序文件(spongycastle/mail/src/main/java/org/spongycastle/mail/smime/handlers/)中: a) 删除
import java.awt.datatransfer.DataFlavor
b) 移除将java.awt.datatransfer.DataFlavor变量/返回类型替换为javax.activation.ActivationDataFlavor

4) 在android项目中,将该文件夹作为模块包括在内

5) 建立并享受乐趣;D

在这里,您可以看到工作的spongycastle邮件包的外观:


下面是一个android应用程序的示例,它使用固定版本通过smtp发送加密的smime消息rt.jar来自哪个包?您确定它包含
java.awt.datatransfer.*
?我从JRE系统库中获得了rt.jar,它包含java.awt.datatransfer.*Android不是标准的java平台。有关更多信息,请参阅SO主题。
package org.spongycastle.mail.smime.handlers;

import org.spongycastle.mail.smime.SMIMEStreamingProcessor;

import javax.activation.ActivationDataFlavor;
import javax.activation.DataContentHandler;
import javax.activation.DataSource;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.internet.ContentType;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMultipart;

import java.awt.datatransfer.DataFlavor;

import java.io.BufferedInputStream;
import java.io.FilterOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Enumeration;
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.spongycastle">
</manifest>
apply plugin: 'com.android.library'
dependencies {
    compile 'com.sun.mail:android-mail:1.5.5'
    compile 'com.sun.mail:android:1.5.5'
    compile 'com.madgag.spongycastle:pkix:1.54.0.0'
    compile 'com.madgag.spongycastle:prov:1.54.0.0'
    compile 'com.madgag.spongycastle:core:1.54.0.0'
    testCompile 'junit:junit:4.12'
}

android {
    compileSdkVersion 24
    buildToolsVersion "24.0.0"

    defaultConfig {
        minSdkVersion 15
        targetSdkVersion 24
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}