gpt4 book ai didi

java - 主类存在时找不到

转载 作者:行者123 更新时间:2023-11-30 08:58:55 24 4
gpt4 key购买 nike

我在运行 bnd 启动器时遇到了问题。实际问题是在使用 gradle 构建期间出现的,但是当我直接调用 jar 时它也不起作用。 Launcher 类确实存在于那个 jar 中,并且它确实有一个 main 方法。有人知道我为什么会收到此错误吗?

$ java -cp cnf/cache/biz.aQute.launcher/biz.aQute.launcher-1.4.0.jar aQute.launcher.Launcher
Error: Could not find or load main class aQute.launcher.Launcher

当我读取 jar 的内容时,我可以看到 Launcher 类确实存在。

$ jar tvf cnf/cache/biz.aQute.launcher/biz.aQute.launcher-1.4.0.jar
1490 Fri Sep 26 06:49:00 CEST 2014 META-INF/MANIFEST.MF
...
1586 Fri Sep 26 06:49:00 CEST 2014 aQute/launcher/Launcher$1.class
2270 Fri Sep 26 06:49:00 CEST 2014 aQute/launcher/Launcher$2.class
794 Fri Sep 26 06:49:00 CEST 2014 aQute/launcher/Launcher$3.class
1133 Fri Sep 26 06:49:00 CEST 2014 aQute/launcher/Launcher$4.class
1100 Fri Sep 26 06:49:00 CEST 2014 aQute/launcher/Launcher$5.class
1260 Fri Sep 26 06:49:00 CEST 2014 aQute/launcher/Launcher$AllPermissionCollection.class
1149 Fri Sep 26 06:49:00 CEST 2014 aQute/launcher/Launcher$AllPolicy.class
37566 Fri Sep 26 06:49:00 CEST 2014 aQute/launcher/Launcher.class
...

我也试过从另一个随机 jar 加载另一个随机类并且确实有效。只有当缺少 main 方法时,我才会得到一个不同的错误(Main method not found in class)。

所有这些文件的权限也是相同的,否则我也无法运行“jar tvf”。

那么,有什么想法吗?

最佳答案

我找到了解决方案。似乎我缺少一个依赖项,但它是一个 OSGi 框架。当我将 felix 框架添加到类路径时,它确实启动了。显然,Launcher 类实现了一个来自 OSGi 框架的接口(interface),当它找不到这个类时,它根本不会加载这个类。这可能是对 java 运行时的改进(主要是冗长的输出可能会提到这个问题)。

现在的问题是为什么 bnd 会尝试在没有框架的情况下启动启动器,但这是我问过他们的问题。

关于java - 主类存在时找不到,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27457710/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com