我有一个foobar.jar包含以下两个类的jar文件:
public class Foo {
public static void main(String[] args) {
System.out.println("Foo");
}
}
Run Code Online (Sandbox Code Playgroud)
另一个类看起来像这样:
import javax.batch.api.chunk.ItemProcessor;
public class Bar implements ItemProcessor {
public static void main(String[] args) {
System.out.println("Bar");
}
@Override
public Object processItem(Object item) throws Exception {
return item;
}
}
Run Code Online (Sandbox Code Playgroud)
如果我使用以下命令执行程序,程序将按预期运行并打印Foo:
$ java -cp foobar.jar Foo
Foo
$
Run Code Online (Sandbox Code Playgroud)
但是如果我尝试使用类中的main方法启动程序Bar,JVM会输出启动错误并退出:
$ java -cp foobar.jar Bar
Error: Could not find or load main class Bar
$
Run Code Online (Sandbox Code Playgroud)
这是同样的错误,就好像我会尝试使用不在jar中的类来启动程序,例如
$ java -cp foobar.jar BarNotThere
Error: …Run Code Online (Sandbox Code Playgroud)