首先,我使用默认值创建了一个xtext项目(以简单的Greetings语法为例)。

然后,我用一些代码(可以在下面看到)创建一个.java文件,并将其添加到验证文件夹中。

我已经在普通的Java项目中将一些jar加载到了构建路径中。如果我将特定的Java文件作为独立文件运行,它将加载库并运行代码。 Java文件非常简单:

import org.semanticweb.owlapi.apibinding.OWLManager;
import org.semanticweb.owlapi.model.OWLOntologyCreationException;
import org.semanticweb.owlapi.model.OWLOntologyManager;
import org.xtext.example.mydsl.myDsl.Greeting;

public static void main(String[] args){
    Greeting hey = null;
    try {
        test(hey);
    } catch (OWLOntologyCreationException e) {
        e.printStackTrace();
    }
}

public static void test(Greeting imp) throws OWLOntologyCreationException {
    OWLOntologyManager manager = OWLManager.createOWLOntologyManager();
    System.out.println("success!");
}


但是,如果从.xtend验证程序文件中调用“测试”函数,则会生成此错误:

java.lang.NoClassDefFoundError: org/semanticweb/owlapi/model/OWLOntologyCreationException
at org.xtext.example.mydsl.validation.MyDslValidator.checkGreetingStartsWithCapital(MyDslValidator.java:24)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
/* (has some more "at" in the middle) */
Caused by: java.lang.ClassNotFoundException: org.semanticweb.owlapi.model.OWLOntologyCreationException cannot be found by org.xtext.example.mydsl_1.0.0.qualifier
at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:461)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:372)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:364)
at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:161)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 32 more


当它提到“无法通过org.xtext.example.mydsl_1.0.0.qualifier找到”时,我认为问题出在清单中,但是我尝试了各种可能的方式将库添加到清单中,但无济于事。

最佳答案

如果您将库添加到构建路径


将其复制到插件中的新lib文件夹中
修改清单并将罐子添加为条目(运行时选项卡,类路径部分)
添加要包含在build.properties中的罐子(应该有警告和快速修复)

关于java - 无法在Eclipse中将库添加到xtext项目(返回错误),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40731406/

10-10 18:12
查看更多