首页 > 解决方案 > 在 Eclipse IDE 中获取“错误:无法找到或加载主类 aQute.launcher.Launcher”,即使它在命令行中工作也是如此

问题描述

我目前正在进行一个使用 OSGi/Bndtools 的项目。我还是 OSGi/Bndtools 的新手,所以请耐心等待。

我一直在使用带有 Bndtools (5.0.1) 的 Eclipse IDE (2020-03) 进行开发。但是,我重新格式化了我的 PC,我似乎无法让我的 OSGi 程序在我的新 Eclipse IDE/Bndtools 设置上运行。我目前正在使用带有 Bndtools (5.3.0 REL) 的 Eclipse (2020-03)。(我还没有找到下载旧版 Bndtools 5.0.1 的方法)。

错误摘要: 当我单击BND 运行描述文件 ( ) 的“运行 OSGistub.bndrun ”按钮时,我在 Eclipse 控制台中看到以下错误:

Error: Could not find or load main class aQute.launcher.Launcher

控制台中没有给出其他文本,并且 OSGi 程序无法运行。

但是,当我在终端中执行以下行时,我的 OSGi/Bnd 程序确实运行

bnd stub.bndrun

stub.bndrun相同的 BND 运行描述文件在哪里。

编辑:这是您可以用来重现我的问题的存储库:https ://github.com/vorajeem/bndtools_error_reproduce_public.git

其他细节stub.bndrun如下:

-runfw: org.apache.felix.framework;version='[5.2.0,5.2.0]'
-runee: JavaSE-1.8
-runsystemcapabilities: ${native_capability}

-resolve.effective: active

-runvm: -Dosgi.console

我认为我的问题类似于以下问题中给出的问题:Could not find main class while it does exist。但我不明白上面链接中问题的答案。

尝试 1: 根据上面给出的问题 #27457710 的答案,我已将 Apache Felix 框架 (5.2.0) 添加到“运行包”中,但我仍然收到相同的错误消息。

我在 StackOverflow 上看到了带有类似错误消息的其他问题(即Could not find or load main class [package-name]。但是,没有提及 Bndtools - 我认为我的问题可能与 Bndtools 在我的 PC 上的设置方式有关。

尝试 2: 我已将 'biz.aQute.launcher' (3.0.0) 添加到我的 'Run Bundles' 中,但我仍然收到相同的错误消息。

请求您的帮助。提前致谢。

编辑:

我已添加-runvm -verbose:classstub.bndrun,然后单击“运行 OSGi”/“调试 OSGi”。输出是加载的类的长列表(以及我之前看到的错误)。我添加了输出的前两行和最后几行。似乎它成功加载了所有JAVA包(加载的包都以java.sun.前缀开头,它们都来自/usr/lib/jvm/java-8-openjdk-amd64/jre/lib)。

但是,它找不到任何OSGi/Bndtools 包(??)。我想知道我的 Bndtools 存储库是否设置正确?...我怎样才能确保是这种情况?

[Opened /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/rt.jar]
[Loaded java.lang.Object from /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/rt.jar]
[Loaded java.io.Serializable from /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/rt.jar]
...
[Loaded java.text.AttributedCharacterIterator$Attribute from /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/rt.jar]
[Loaded java.text.Format$Field from /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/rt.jar]
[Loaded java.text.MessageFormat$Field from /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/rt.jar]
[Loaded java.lang.Shutdown from /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/rt.jar]
[Loaded java.lang.Shutdown$Lock from /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/rt.jar]
Error: Could not find or load main class aQute.launcher.Launcher

标签: javaeclipseosgibndtools

解决方案


我遇到了同样的问题。我只是想启动一个用 bndtools 模板生成的空 OSGi 组件。

在我的情况下,我只需要删除生成的 module-info.java 并且 bndrun 正确启动。


推荐阅读