【问题标题】:Cannot generate output file using in xtext using IFileSystemAccess2无法使用 IFileSystemAccess2 在 xtext 中生成输出文件
【发布时间】:2017-01-29 03:52:18
【问题描述】:

使用方法

https://christiandietrich.wordpress.com/2011/10/15/xtext-calling-the-generator-from-a-context-menu/

调用模型到文本转换的函数。用于生成文本文件的类与示例中的不同:

class TransformMcrl2{

   def doGenerate(Resource input, IFileSystemAccess2 fsa, IGeneratorContext context) {
       fsa.generateFile("testfile.txt" , "Content")
   }

}

以及用来调用doGenerate的代码段

// load the Xtext model to an XtextResourceSet
XtextResourceSet resourceSet = aresourceSetProvider.get();
// get the resource and resolve all references
Resource resource = resourceSet.getResource(uri, true);
EcoreUtil.resolveAll(resource);
IResource documentResource = xtextDocument.getAdapter(IResource.class);
IProject project = documentResource.getProject();

final EclipseResourceFileSystemAccess2 fsa = fileAccessProvider.get();
IFolder srcGenFolder = project.getFolder("lps-gen");
if (!srcGenFolder.exists()) {
    try {
        srcGenFolder.create(true, true, new NullProgressMonitor());
    } catch (CoreException e) {
        return null;
    }
}
fsa.setProject(project);
String tmpFileName = srcGenFolder.getFullPath().toString();
fsa.setOutputPath(tmpFileName);

TransformMcrl2 generator = new TransformMcrl2();
generator.doGenerate(resource, fsa, new GeneratorContext());

doGenerate 方法给出异常InvocationTargetException,它的原因表明错误是 NullPointerException。

我需要从 IGenerator 继承吗?

此外,org.eclipse.xtext.builder.participant 也未被禁用,因为需要多个模型进行文本对话。

【问题讨论】:

  • 这与这里已经回答的问题相同:stackoverflow.com/questions/41665691/… 例如访问应该需要一个进度监视器和不同的输出路径
  • 没有关系,我继续下一步,项目下的输出文件夹是lps-gen,文件名暂时固定在doGenerate
  • 是的,但代码不同,这可能会导致您的问题
  • 添加了fsa.setMonitor(new NullProgressMonitor()) 异常消失了,但是没有创建文件。
  • 确定你对 sourcefolder 的操作正确=应该是 setOutputPath("lps-gen")

标签: xtext


【解决方案1】:

确定

  1. 您可以通过 guice 创建诸如生成器之类的东西
  2. 设置文件系统访问的进度监视器
  3. 设置输出路径正确fsa.setOutputPath("xxx")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-15
    • 2019-02-05
    • 1970-01-01
    • 2013-10-11
    • 1970-01-01
    相关资源
    最近更新 更多