【问题标题】:"Package with uri 'null' not found" while loading XML file using EMF使用 EMF 加载 XML 文件时出现“找不到 uri 'null' 的包”
【发布时间】:2018-06-30 01:24:54
【问题描述】:

我正在尝试使用 EMF 加载 XML 文件,并且我在 XMLArtefactAdapter.java 中使用以下代码来执行此操作:

构造函数():

ResourceSet set = new ResourceSetImpl();
//registering factory
set.getResourceFactoryRegistry()
  .getExtensionToFactoryMap()
  .put
    (Resource.Factory.Registry.DEFAULT_EXTENSION,new XMLResourceFactoryImpl());

parse() 方法:

//parsing XML
try {
        String absolutePath = file.getAbsolutePath();
        URI uri = URI.createFileURI(absolutePath);
        Resource resource = resourceSet.createResource(uri);
        resource.load(Collections.EMPTY_MAP);

        System.out.println("LOADED");

    } catch (IOException e) {
        System.out.println(e.toString());
    }

我正在我的 Main 类中执行此代码片段:

Path path = Paths.get("C:\\Users\\Srijani\\Desktop\\book.xml");
XMLArtefactAdapter xmlAdapter = new XMLArtefactAdapter(path);
xmlAdapter.parse();

但是,运行此代码时出现错误。

org.eclipse.emf.ecore.resource.Resource$IOWrappedException: Package with uri 'null' not found. (file:/C:/Users/Srijani/Desktop/plugin.xml, 3, 9)

请注意以下几点: 我的插件.xml

<plugin>

   <extension point="org.eclipse.emf.ecore.generated_package">
      <!-- @generated simpletree -->
      <package
            uri="platform:/plugin/com.kaleidoscope.core.aux.simpletree/model/SimpleTree.ecore"
            class="SimpleTree.SimpletreePackage"
            genModel="model/simpletree.genmodel"/>
   </extension>

</plugin>

知道为什么会这样吗? 提前致谢!

【问题讨论】:

    标签: java xml eclipse-emf emf eclipse-emf-ecore


    【解决方案1】:

    EPackage uri 是 EPackage 的一种公共标识符。它不应该是 eclipse uri。

    通常,命名空间 URI 是一个 http url,提供有关 EPackage 提供者、ePackage 名称和版本的一些基本信息。 例如:

      <extension point="org.eclipse.emf.ecore.generated_package">
         <package
            uri="http://www.eclipse.org/emf/2002/Ecore"
            class="org.eclipse.emf.ecore.EcorePackage"
            genModel="model/Ecore.genmodel"/>
      </extension>
    

    你应该:

    1. 将您的 EPackage nsUri 更改为您的 EPackage 的标识符,
    2. 重新生成 EMF 代码,
    3. 并合并您的 plugin.xml 和 plugin.xml_gen 文件以同步您的 nsURI 值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-21
      • 1970-01-01
      • 1970-01-01
      • 2016-04-22
      • 2021-07-10
      • 2023-03-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多