将java.net.URI转换为org.eclipse.emf.common.util.URI

Mar*_*tin 3 url uri eclipse-plugin eclipse-emf emf

Java中至少有两种类型的URI:

  • java.net.URI
  • org.eclipse.emf.common.util.URI

我有java.net.URI并且需要使用EMF URI.我如何将前者转换为后者?

如果我尝试,new URI uri = profileUrl.toURI()我会收到这样的消息:

Type mismatch: cannot convert from java.net.URI to org.eclipse.emf.common.util.URI
Run Code Online (Sandbox Code Playgroud)

我还尝试了一些解决方法,它将创建一个字符串,java.net.URI并使用新字符串创建一个新的EMF URI ...这会导致文件未找到异常.

Kel*_*dil 9

首先,Java中没有"两种类型的URI":Java中只有一种,EMF中有一种是为建模而构建的框架.他们有自己的执行URI的,因为这反映了自己的概念之一,或者他们需要更多比Java的URI允许,或者......可以有多种原因对于这样的选择,而很多框架提供自己的这种版本或者这样的类(在Eclipse中,使用ctrl+ shift+ T并键入"List"或"Array"作为示例).

至于实际问题,没有办法直接从a java.net.URIorg.eclipse.emf.common.util.URI:你需要将Java URI转换为字符串,然后围绕这个字符串创建一个新的URI.像这样的东西:

java.net.URI javaURI = profileUrl.toURI();
org.eclipse.emf.common.util.URI emfURI = org.eclipse.emf.common.util.URI.createURI(javaURI.toString());
Run Code Online (Sandbox Code Playgroud)

您需要使用两个URI中至少一个的完全限定名称:您未在Java类中导入的URI.根据你的问题判断,我说你已经导入了org.eclipse.emf.common.util.URI,因此可以简单地使用它:

java.net.URI javaURI = profileUrl.toURI();
URI emfURI = URI.createURI(javaURI.toString());
Run Code Online (Sandbox Code Playgroud)