无法将库添加到 Eclipse 中的 xtext 项目(返回错误)

问题描述 投票:0回答:2

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

然后我创建了一个包含一些代码的 .java 文件(如下所示)并将其添加到验证文件夹中。

我已经将一些 jar 加载到构建路径中,就像在普通 Java 项目中一样。如果我将特定的 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 验证器文件调用“test”函数,则会生成此错误:

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 找到”时,我认为问题出在清单中,但我尝试以各种可能的方式将库添加到清单中,但无济于事。

java eclipse libraries dsl xtext
2个回答
0
投票

如果将库添加到构建路径

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

0
投票

我(仍然)有同样的问题。我创建了示例 Domainmodel Xtext 项目,并按照如下所述执行了每个步骤,但我无法让它工作。 (现在在 Windows 和 Linux 上都尝试过)

当我尝试将项目作为 Eclipse 应用程序运行时,总是出现此错误(添加 .jar 之前一切正常):

org/eclipse/xtext/example/domainmodel/DomainmodelRuntimeModule (发生在 org.eclipse.xtext.example.domainmodel.ui.DomainmodelExecutableExtensionFactory 中) 引起原因:java.lang.ClassNotFoundException:org.eclipse.xtext.example.domainmodel.DomainmodelRuntimeModule无法被org.eclipse.xtext.example.domainmodel.ui_2.32.0.qualifier找到 在 org.eclipse.osgi.internal.loader.BundleLoader.generateException(BundleLoader.java:541) 在 org.eclipse.osgi.internal.loader.BundleLoader.findClass0(BundleLoader.java:536) 在 org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:416) 在 org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:168) 在 java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525) ... 113 更多

1: 添加了带有 .jar 的 lib 文件夹

2:添加到 Java 构建路径(库>类路径)

3:添加到类路径部分的 MANIFEST.ml 运行时选项卡中

4:在build.properties中检查.jar

也许错误是,一切都是在“主”项目文件夹“org.eclipse.xtext.example.domainmodel”中完成的,我还需要在“org.eclipse.xtext.example.domainmodel.ui”中进行更改“等等?

© www.soinside.com 2019 - 2024. All rights reserved.