gpt4 book ai didi

java - 从 jar 文件中,从实现 jar 外部类的类调用 main 方法

转载 作者:行者123 更新时间:2023-11-30 08:09:01 27 4
gpt4 key购买 nike

假设我有一个名为“MyJar.jar”的 jar 文件,其类定义如下:

import SomeInterface;

public class MyClass implements SomeInterface {
static public void main ( String args[] ) {
...
}
}

但是请注意,接口(interface)“SomeInterface”不在 jar 文件中。相反,它在另一个名为“SomeJar.jar”的 jar 文件中引用

我的manifest-mf 文件确实包含这样的内容:

Main-Class: MyClass

现在,假设我尝试使用看起来可行的语法从我的 jar 文件中运行这个“MyClass”类的“main”方法,即:

java -cp SomeJar.jar -jar MyJar.jar

在这种情况下,我得到类似的信息:

Error: Could not find or load main class MyClass

但是,如果我像这样重新编写语法,一切都会正常:

java -cp SomeJar.jar;MyJar.jar MyClass

为了进行健全性检查,我确实使用带有适当 list 文件条目的“HelloWorld”类进行了前一个调用,并且效果良好。似乎只有当相关类实现的接口(interface)不能立即可供 jar 文件使用,而是存在于 jar 文件外部时,才会出现此问题。 (扩展类时也可能会发生这种情况,但我还没有检查)如您所见,我可以使事情正常工作......只是不使用我认为可以工作的“java -jar”语法。此外,使用前一种方法,无论我是否在“java -jar”调用中包含“-cp”类路径,我都不会收到“NoClassDefFoundError”错误(我认为我会这样做)。

有什么想法为什么前一个“java -jar”调用不起作用(并且似乎没有给出任何关于为什么它不起作用的错误)而后一个“java”调用工作正常?

最佳答案

-cp-jar 选项都设置(而不是附加到)底层类路径。无论命令行上的最后一个选项都将覆盖所有以前的 -cp-jar 选项。

关于java - 从 jar 文件中,从实现 jar 外部类的类调用 main 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30676694/

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