gpt4 book ai didi

java - 调用 JvmModelInferrer/Generator 从 Java 项目生成代码时出现 NullPointerException

转载 作者:行者123 更新时间:2023-12-02 06:10:39 27 4
gpt4 key购买 nike

我正在开发一个项目,该项目需要根据指定的语言(该语言只有函数定义)生成Java类。并且 JvmModelInferrer/IGenerater 需要从 java 项目隐式调用。

按照帖子How to invoke Xtext parser/JvmModelInferrer from a Java project中给出的步骤进行操作,但不幸的是 EclipseResourceFileSystemAccess2.generateFile() 抛出 NullPointerException

用于生成的代码:

    public class Generator {
private static IGenerator generator;

public static void main(String[] args) {

// this line registers the EMF for our DSL
Injector injector = new RequestDslStandaloneSetup().createInjectorAndDoEMFRegistration();
ResourceSet rs = new ResourceSetImpl();
File file = new File(
"D:/Xtext/XtextFormIntegration/runtime-XtextFormNC/XtextFormCar/lang.request");
Resource resource = rs.getResource(URI.createURI(file.toURI().toString()), true);

//setup the generator
generator = injector.getInstance(IGenerator.class);

//setup the file system access
final EclipseResourceFileSystemAccess2 fsa = new EclipseResourceFileSystemAccess2();


generator.doGenerate(resource, fsa);

}
}

异常(exception)情况是:

Exception in thread "main" java.lang.NullPointerException
at org.eclipse.xtext.builder.EclipseResourceFileSystemAccess2.generateFile(EclipseResourceFileSystemAccess2.java:156)
at org.eclipse.xtext.generator.AbstractFileSystemAccess.generateFile(AbstractFileSystemAccess.java:75)
at org.eclipse.xtext.xbase.compiler.JvmModelGenerator._internalDoGenerate(JvmModelGenerator.java:201)
at org.eclipse.xtext.xbase.compiler.JvmModelGenerator.internalDoGenerate(JvmModelGenerator.java:1756)
at org.eclipse.xtext.xbase.compiler.JvmModelGenerator.doGenerate(JvmModelGenerator.java:181)
at de.itemis.utils.jface.viewers.Generator.main(Generator.java:41)

需要您的帮助来解决上述问题。

感谢您的期待。

最佳答案

EclipseResourceFileSystemAccess2 只能在完全初始化的 Eclipse 环境(包括工作区等)中使用。如果您想编写一个独立的应用程序(具有简单 main 方法的类),您应该从注入(inject)器获取 IFileSystemAccess 的实例,类似于您对生成器所做的操作。

关于java - 调用 JvmModelInferrer/Generator 从 Java 项目生成代码时出现 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21926122/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com