Java Eclipse DSL中的自反编译器和加载程序不访问内部类和JAR

Java Eclipse DSL中的自反编译器和加载程序不访问内部类和JAR,java,eclipse,reflection,dsl,xtext,Java,Eclipse,Reflection,Dsl,Xtext,在Eclipse Java中,在开发Java项目时,我可以轻松地使用以下方法编译外部Java文件: JavaCompiler compiler = ToolProvider.getSystemJavaCompiler(); compiler.run(null, null, null, javaNamesArray); 然而,在EclipseDSL中,在一个Xtext项目中,完全相同的事情不起作用,因为JavaCompiler对象没有从我自己的项目中找到JAR(在类路径中)或类二进制文件。为了能

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

JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
compiler.run(null, null, null, javaNamesArray);
然而,在EclipseDSL中,在一个Xtext项目中,完全相同的事情不起作用,因为JavaCompiler对象没有从我自己的项目中找到JAR(在类路径中)或类二进制文件。为了能够编译,我必须导出我需要的类,并告诉编译器它们在哪里以及JAR

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

ps:然后,当加载类时,问题会重复出现

编辑:

范例

我的代码中有此接口:

public static interface CustomSWRLInterface {...}
然后我创建一个外部Java文件(“swrl1.Java”),其中包含以下类:

public class swrl1 implements CustomSWRLInterface {...}
我以Eclipse应用程序的形式运行Xtext项目,该应用程序加载可以在DSL中编码的环境。然后我有一个验证器,它尝试将外部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实例时,类路径或加载类的可见性发生了变化(但我不知道如何解决这个问题)。

您能详细说明一下您到底在做什么吗。e、 g提供一个例子?我提供了一个最小的例子。即使在最简单的情况下,问题也会出现。我知道这与Xtext项目和实例的启动方式有关,但我不知道如何解决它。。您是否验证了这是否适用于普通的eclipse插件项目,或者它是否适用于其他项目?当然,在eclipse内部有eclipse/Osgi类加载规则。JAR位于一个我称为lib的文件夹中,与src文件夹位于同一文件夹中。JAR被添加到项目的构建路径和MANIFEST.MF(运行时部分)上的类路径中。我对“eclipse/Osgi类加载规则”一无所知。(注:Eclipse Java项目的一切都很好,但这不是我的目标)