Eclipse DSL中的自反编译器和加载器无法访问内部类和JAR

时间:2017-03-17 16:49:51

标签: java eclipse reflection dsl xtext

在Eclipse Java中,在开发Java项目时,我可以轻松地使用这些方法来编译外部Java文件:

JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
compiler.run(null, null, null, javaNamesArray);

然而,在Eclipse的DSL中,在Xtext项目中,完全相同的东西是不行的,因为JavaCompiler对象找不到JAR(在类路径中),也没有找到我自己的类二进制文件项目。为了能够编译,我必须导出我需要的类,并告诉编译器它们和JAR的位置。

为什么Xtext项目中的编译器行为如此不同?我错过了什么?

ps:然后,在加载类时,问题会自行重复

修改

实施例

我的代码中有这个界面:

public static interface CustomSWRLInterface {...}

然后我创建了一个外部Java文件(" swrl1.java"),其中包含类:

public class swrl1 implements CustomSWRLInterface {...}

我将Xtext项目作为Eclipse应用程序运行,它加载了我可以在DSL中编码的环境。我有一个Validator,试图将外部swrl1.java编译为swrl1.class。但是,它会产生很多这样的错误:

C:\Users\Manuel\Documents\EclipseDSLNeon\runtime-DSL1\Test\swrl\swrl1.java:4:
error: package org.mindswap.pellet does not exist import org.mindswap.pellet.ABox;

它没有找到与这些导入关联的JAR,也没有找到我定义接口的内部类。这个问题只发生在Xtext项目中,这让我认为,在启动Eclipse实例时,类路径或加载类的可见性会发生一些事情(但我不知道如何解决它)。

0 个答案:

没有答案