java - 在 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:class
到stub.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
解决方案
我遇到了同样的问题。我只是想启动一个用 bndtools 模板生成的空 OSGi 组件。
在我的情况下,我只需要删除生成的 module-info.java 并且 bndrun 正确启动。
推荐阅读
- css - CSS background-position 属性在这个例子中是如何工作的?
- angular - 使用打字稿难以理解装饰器输出
- angular - 如何从java的响应中以角度下载文件?
- android - 哪个更可取:Rx-Subject 或 Android BroadcastReceiver
- r - 创建嵌套的分面网格
- javascript - 使用 CryptoJs 库时,android 和 javascript 的加密密码不同
- scala - 基于 Map 从 List[String] 转换为 List[Int]
- python - 如何获取上个月的日期范围?
- django - 使用 Django 实现基于翻译键的国际化
- python - 使用 QSortFilterProxyModel 时的 pyQt5 段错误