java.lang.SecurityException: class "org.eclipse.emf.ecore.resource.URIConverter$Loadable" 的

java.lang.SecurityException: class "org.eclipse.emf.ecore.resource.URIConverter$Loadable"'s

谁能帮我解决这个错误?

 java.lang.SecurityException: class "org.eclipse.emf.ecore.resource.URIConverter$Loadable"'s signer information does not match signer information of other classes in the same package  at java.lang.ClassLoader.checkCerts(ClassLoader.java:898)

我想加载一个元模型 (dart.ecore) 文件和一个模型文件 (dartlang.dart)。

ResourceSet resourceSet = new ResourceSetImpl(); 
resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put("ecore", new EcoreResourceFactoryImpl());
resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put("xmi", new  XMIResourceFactoryImpl());
Resource myMetaModel= resourceSet.getResource(URI.createFileURI("./metamodel/dart.ecore"), true);
EPackage univEPackage = (EPackage) myMetaModel.getContents().get(0);
resourceSet.getPackageRegistry().put("http://gholizadeh.org", univEPackage);
Resource myModel = resourceSet.getResource( URI.createURI( "./model/dartlang.dartspec"), true);

进口:

import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.ecore.EPackage;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.emf.ecore.resource.ResourceSet;
import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
import org.eclipse.emf.ecore.xmi.impl.EcoreResourceFactoryImpl;
import org.eclipse.emf.ecore.xmi.impl.XMLResourceFactoryImpl;

谢谢!

这通常是因为从不同的 jar 中多次加载相同的 class。这里的答案详细解释并提供了一些不错的解决方案:java-securityexception-signer-information-does-not-match

最简单的两个解决方案是删除重复的 jar 文件,或者有时更改 jar 在 eclipse 构建中的顺序。

如果这还不够,我们将需要有关您的项目设置的更多信息;比如你是如何管理依赖关系的,它是一个eclipse插件项目。