Java Xtext中的作用域和导入

Java Xtext中的作用域和导入,java,xtext,Java,Xtext,我有以下Xtext语法: Model: 'model' name = ID imports += Import* items += Item* rules += Rule*; Import: 'import' importURI = STRING; Rule: 'rule' name = ID '(' items += [Item]* ')'; Item: 'item' name = ID; 打开编辑器时,如果规则中的所有项引用都在同一个文件中,那么它们都

我有以下Xtext语法:

Model:
    'model' name = ID imports += Import* items += Item* rules += Rule*;

Import:
    'import' importURI = STRING;

Rule:
    'rule' name = ID '(' items += [Item]* ')';

Item:
    'item' name = ID;
打开编辑器时,如果规则中的所有项引用都在同一个文件中,那么它们都会正确对齐,并且我可以使用F3跳转到声明。但是,如果我尝试从其他文件导入它们,这将不起作用。例如:

文件优先.mydsl

文件second.mydsl

假设这两个文件位于同一文件夹中,它仍然无法从导入的文件中找到“第二个”引用。如果我包含导入文件的文件扩展名或完整路径,也不起作用。 如何让Xtext识别导入的文件


交叉发布到

请确保按以下方式配置您的工作流

        // scoping and exporting API
        fragment = scoping.ImportURIScopingFragment {}
        fragment = exporting.SimpleNamesFragment {}

        // scoping and exporting API
        // fragment = scoping.ImportNamespacesScopingFragment {}
        // fragment = exporting.QualifiedNamesFragment {}
        // fragment = builder.BuilderIntegrationFragment {}
        ....
        // fragment = types.TypesGeneratorFragment {}

请确保按以下方式配置您的工作流

        // scoping and exporting API
        fragment = scoping.ImportURIScopingFragment {}
        fragment = exporting.SimpleNamesFragment {}

        // scoping and exporting API
        // fragment = scoping.ImportNamespacesScopingFragment {}
        // fragment = exporting.QualifiedNamesFragment {}
        // fragment = builder.BuilderIntegrationFragment {}
        ....
        // fragment = types.TypesGeneratorFragment {}

我按照你的建议更改了配置。现在它抛出java.lang.IllegalStateException:无法覆盖最终绑定'final org.eclipse.xtext.naming.IQualifiedNameProvider->org.eclipse.xtextext.naming.SimpleNameProvider,由org.eclipse.xtextext.generator.exporting.SimpleNameFragment'在生成工件时提供。您是否向工作流中添加了其他内容?你能发布完整的stacktrace吗?我按照你的建议更改了配置。现在它抛出java.lang.IllegalStateException:无法覆盖最终绑定'final org.eclipse.xtext.naming.IQualifiedNameProvider->org.eclipse.xtextext.naming.SimpleNameProvider,由org.eclipse.xtextext.generator.exporting.SimpleNameFragment'在生成工件时提供。您是否向工作流中添加了其他内容?你能发布完整的stacktrace吗?
        // scoping and exporting API
        fragment = scoping.ImportURIScopingFragment {}
        fragment = exporting.SimpleNamesFragment {}

        // scoping and exporting API
        // fragment = scoping.ImportNamespacesScopingFragment {}
        // fragment = exporting.QualifiedNamesFragment {}
        // fragment = builder.BuilderIntegrationFragment {}
        ....
        // fragment = types.TypesGeneratorFragment {}