我正在尝试在MFA上绑定jar库(jCIFS),但是我遇到了一些错误,例如:
'Jcifs.Util.MD4'未实现继承的抽象成员'Java.Security.MessageDigestSpi.EngineDigest()
经过研究,我发现了一些与此相关的主题,告诉他们编辑元数据以更改类的权限,如下所示:
<attr path="/api/package[@name='java.security']/class[@name='MessageDigestSpi']/method[@name='engineDigest']" name="visibility">public</attr>
但是错误没有改变,并且仍然无法理解该错误的含义。
任何人 ?
编辑:这是返回错误的虚拟类的代码:
public virtual byte[] EngineDigest ()
{
if (id_engineDigest == IntPtr.Zero)
id_engineDigest = JNIEnv.GetMethodID (class_ref, "engineDigest", "()[B");
if (GetType () == ThresholdType)
return (byte[]) JNIEnv.GetArray (JNIEnv.CallObjectMethod (Handle, id_engineDigest), JniHandleOwnership.TransferLocalRef, typeof (byte));
else
return (byte[]) JNIEnv.GetArray (JNIEnv.CallNonvirtualObjectMethod (Handle, ThresholdClass, id_engineDigest), JniHandleOwnership.TransferLocalRef, typeof (byte));
}
我将其添加到一个新文件中:
partial class MD4
{
public override byte[] EngineDigest()
{
return null;
}
}
如果我这样做,将返回此错误:
错误1类型'Jcifs.Util.MD4'已经定义了具有相同参数类型的名为'EngineDigest'的成员
据我了解,EngineDigest方法已经存在,但是该类需要实现它。我该怎么做?
完整错误:错误195'Jcifs.Util.MD4'未实现继承的抽象成员'Java.Security.MessageDigestSpi.EngineDigest()'
编辑2:我尝试使用来自xamarin网站的OsmDroidBinding示例来回答问题。我编辑了图元文件,直到出现类似的错误。我发现的那一行是这一行:
<attr path="/api/package[@name='org.osmdroid.tileprovider']/class[@name='MapTileProviderBase.ScaleTileLooper']/method[@name='handleTile']" name="visibility">public</attr>
我得到这个错误:
然后我尝试将其添加到我的项目图元文件中(如上),但错误仍然存在:
<attr path="/api/package[@name='java.security']/class[@name='MessageDigestSpi']/method[@name='engineDigest']" name="visibility">public</attr>
谢谢。
最佳答案
它告诉您生成的类Jcifs.Util.MD4没有实现继承的抽象方法。抽象方法是任何派生类都必须重写的方法。
下面的代码将基类方法的可见性更改为public,这显然无法解决问题。
<attr path="/api/package[@name='java.security']/class[@name='MessageDigestSpi']/method[@name='engineDigest']" name="visibility">public</attr>
有几种方法可以解决此错误。也许最简单的方法是将类文件添加到Java绑定库,然后将以下代码添加到其中。
namespace Jcifs.Util
{
public partial class MD4
{
public override void EngineDigest()
{
}
}
}
注意您将需要将
EngineDigest()
的返回类型更改为为基类中的abstract方法定义的返回类型。您没有在问题中提及返回类型,因此我将其设为void
。关于android - 装订 jar 库,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13534521/