c#winRT中的类型初始值设定项异常ikvm weka

c#winRT中的类型初始值设定项异常ikvm weka,c#,weka,ikvm,C#,Weka,Ikvm,我正在开发一个Windows8应用程序,我正在使用我的c#代码中的weka.dll和ikvm。 我一直使用类型初始值设定项java.nio.charset.standardCharset 源代码来自IKVM.OpenJDK.util。至于内部异常,它来自mscorlib kmeans = new weka.clusterers.SimpleKMeans(); weka.clusterers.ClusterEvaluation eval = new weka.clusterers.

我正在开发一个Windows8应用程序,我正在使用我的c#代码中的weka.dll和ikvm。 我一直使用类型初始值设定项java.nio.charset.standardCharset 源代码来自IKVM.OpenJDK.util。至于内部异常,它来自mscorlib

kmeans = new weka.clusterers.SimpleKMeans();
        weka.clusterers.ClusterEvaluation eval = new weka.clusterers.ClusterEvaluation();            
        kmeans.setNumClusters(numCluster);
        kmeans.setMaxIterations(nbrItr);
        kmeans.setPreserveInstancesOrder(true);
        Data = new weka.core.Instances(new java.io.BufferedReader(new java.io.FileReader(filePath)));
如果我尝试检索数据numInstances,它会起作用,但当我使用数据构建集群时,我在这里遇到一个异常:

kmeans.buildClusterer(Data);  //exception              
eval.setClusterer(kmeans);
eval.evaluateClusterer(Data);
有关此异常的更多详细信息:

System.TypeInitializationException was unhandled by user code
  HResult=-2146233036
  Message=The type initializer for 'java.nio.charset.StandardCharsets' threw an exception.
  Source=IKVM.OpenJDK.Util
  TypeName=java.nio.charset.StandardCharsets
  StackTrace:
       at java.util.zip.ZipFile..ctor(File file, Int32 mode)
       at java.util.zip.ZipFile..ctor(String name)
       at IKVM.Internal.VirtualFileSystem.Initialize()
       at IKVM.Internal.VirtualFileSystem.GetVfsEntry(String name)
       at IKVM.Internal.VirtualFileSystem.GetBooleanAttributes(String path)
       at IKVM.NativeCode.java.io.Win32FileSystem.getBooleanAttributes(Object _this, File f)
       at java.io.Win32FileSystem.getBooleanAttributes(File )
       at java.io.File.isDirectory()
       at java.io.File.toURI()
       at IKVM.Internal.AssemblyClassLoader.MakeResourceURL(Assembly asm, String name)
       at IKVM.Internal.AssemblyClassLoader.AssemblyLoader.FindResources(String name)
       at IKVM.Internal.AssemblyClassLoader.<GetResourcesImpl>d__0.MoveNext()
       at IKVM.NativeCode.ikvm.runtime.AssemblyClassLoader.getResource(ClassLoader classLoader, Assembly assembly, String name)
       at ikvm.runtime.AssemblyClassLoader.getResource(ClassLoader , Assembly , String )
       at ikvm.runtime.AssemblyClassLoader.getResource(String name)
       at java.lang.ClassLoader.getResourceAsStream(String name)
       at weka.core.Utils.readProperties(String resourceName)
       at weka.core.Capabilities..ctor(CapabilitiesHandler owner)
       at weka.clusterers.AbstractClusterer.getCapabilities()
       at weka.clusterers.SimpleKMeans.getCapabilities()
       at weka.clusterers.SimpleKMeans.buildClusterer(Instances data)
       at App1.Clustering.kMeans.ClusteringKmeans()
       at App1.Views.ClusteringPage.Clustering_Click(Object sender, RoutedEventArgs e)

  InnerException: System.InvalidOperationException
       HResult=-2146233079
       Message=The API 'System.Exception.get_TargetSite()' cannot be used on the current platform. See http://go.microsoft.com/fwlink/?LinkId=248273 for more information.
       Source=mscorlib
       StackTrace:
            at System.Reflection.Emit.DynamicILGenerator.GetTokenFor(RuntimeMethodInfo rtMeth)
            at System.Reflection.Emit.DynamicILGenerator.Emit(OpCode opcode, MethodInfo meth)
            at IKVM.Internal.CodeEmitter.RealEmitOpCode(OpCode opcode, Object arg)
            at IKVM.Internal.CodeEmitter.OpCodeWrapper.RealEmit(Int32 ilOffset, CodeEmitter codeEmitter, Int32& lineNumber)
            at IKVM.Internal.CodeEmitter.DoEmit()
            at IKVM.NativeCode.sun.reflect.ReflectionFactory.FastConstructorAccessorImpl..ctor(Constructor constructor)
            at IKVM.NativeCode.sun.reflect.ReflectionFactory.newConstructorAccessor0(Object thisFactory, Object constructor)
            at sun.reflect.ReflectionFactory.newConstructorAccessor0(Constructor )
            at sun.reflect.ReflectionFactory.newConstructorAccessor(Constructor c)
            at java.lang.reflect.Constructor.acquireConstructorAccessor()
            at java.lang.reflect.Constructor.newInstance(Object[] initargs, CallerID )
            at java.lang.Class.newInstance0(CallerID )
            at java.lang.Class.newInstance(CallerID )
            at sun.nio.cs.FastCharsetProvider.lookup(String )
            at sun.nio.cs.FastCharsetProvider.charsetForName(String charsetName)
            at java.nio.charset.Charset.lookup2(String )
            at java.nio.charset.Charset.lookup(String )
            at java.nio.charset.Charset.forName(String charsetName)
            at java.nio.charset.StandardCharsets..cctor()
       InnerException: 
用户代码未处理System.TypeInitializationException异常 HResult=-21462036 Message=java.nio.charset.StandardCharsets的类型初始值设定项引发了异常。 Source=IKVM.OpenJDK.Util TypeName=java.nio.charset.StandardCharsets 堆栈跟踪: 位于java.util.zip.ZipFile..ctor(文件,Int32模式) 位于java.util.zip.ZipFile..ctor(字符串名称) 在IKVM.Internal.VirtualFileSystem.Initialize()中 位于IKVM.Internal.VirtualFileSystem.GetVfsEntry(字符串名) 位于IKVM.Internal.VirtualFileSystem.GetBooleanAttributes(字符串路径) 位于IKVM.NativeCode.java.io.Win32FileSystem.getBooleanAttributes(对象_this,文件f) 位于java.io.Win32FileSystem.getBooleanAttributes(文件) 在java.io.File.isDirectory()中 在java.io.File.toURI()中 在IKVM.Internal.AssemblyClassLoader.MakeSourceUrl(程序集asm,字符串名) 位于IKVM.Internal.AssemblyClassLoader.AssemblyLoader.FindResources(字符串名称) 在IKVM.Internal.AssemblyClassLoader.d_u0.MoveNext()中 在IKVM.NativeCode.IKVM.runtime.AssemblyClassLoader.getResource(ClassLoader ClassLoader,AssemblyAssembly,字符串名称) 在ikvm.runtime.AssemblyClassLoader.getResource(ClassLoader,Assembly,String) 在ikvm.runtime.AssemblyClassLoader.getResource(字符串名称)处 位于java.lang.ClassLoader.getResourceAsStream(字符串名称) 位于weka.core.Utils.readProperties(字符串resourceName) 在weka.core.Capabilities..ctor(CapabilitieHandler所有者) 在weka.cluster.abstractcluster.getCapabilities()上 在weka.clusters.SimpleKMeans.getCapabilities()中 在weka.clusters.SimpleKMeans.buildcluster(实例数据) 在App1.Clustering.kMeans.ClusteringKmeans()中 在App1.Views.ClusteringPage.Clustering\u单击(对象发送方,RoutedEventTarget e) InnerException:System.InvalidOperationException HResult=-2146233079 Message=API“System.Exception.get_TargetSite()”不能在当前平台上使用。看见http://go.microsoft.com/fwlink/?LinkId=248273 了解更多信息。 Source=mscorlib 堆栈跟踪: 位于System.Reflection.Emit.DynamicILGenerator.getToken(RuntimeMethodInfo rtMeth) 位于System.Reflection.Emit.DynamicILGenerator.Emit(操作码操作码,MethodInfo meth) 在IKVM.Internal.CodeEmitter.RealEmitOpCode(操作码操作码,对象参数) 在IKVM.Internal.CodeEmitter.OpCodeWrapper.RealEmit(Int32 ilOffset、CodeEmitter CodeEmitter、Int32和lineNumber) 在IKVM.Internal.CodeEmitter.DoEmit()处 在IKVM.NativeCode.sun.reflect.ReflectionFactory.FastConstructor AccessorImpl..ctor(构造函数)上 在IKVM.NativeCode.sun.reflect.ReflectionFactory.newConstructorAccessor0(对象thisFactory,对象构造函数) 在sun.reflect.ReflectionFactory.newConstructorAccessor0(构造函数)上 在sun.reflect.ReflectionFactory.newConstructorAccessor(构造函数c) 在java.lang.reflect.Constructor.acquireConstructorAccessor()中 位于java.lang.reflect.Constructor.newInstance(对象[]initargs,CallerID) 位于java.lang.Class.newInstance0(CallerID) 位于java.lang.Class.newInstance(CallerID) 位于sun.nio.cs.FastCharsetProvider.lookup(字符串) 位于sun.nio.cs.FastCharsetProvider.charsetForName(字符串charsetName) 位于java.nio.charset.charset.lookup2(字符串) 位于java.nio.charset.charset.lookup(字符串) 位于java.nio.charset.charset.forName(字符串charsetName) 在java.nio.charset.StandardCharsets..cctor()中 内部异常:
类型初始值设定项异常经常从静态类型成员的静态构造函数/初始化中抛出。查看(1)内部异常和(2)其堆栈跟踪应提供有关原因的更多信息。请将这些信息添加到您的问题中。我添加了这些信息,但我认为可变的“数据”仍然为空,在从arff文件检索实例时是否有遗漏或应该添加的内容?我发现这向我表明,您所要求的可能是不可能的。引述:“老实说,我认为这是毫无希望的,除非你使用非常有限的Java子集并愿意投入大量时间。”所以问题在于ikvm,不能在windows应用商店中使用它!