gpt4 book ai didi

java - 尽管 .jar 包含文件,但在 .jar 文件中找不到主类

转载 作者:行者123 更新时间:2023-11-30 03:21:53 27 4
gpt4 key购买 nike

我有一个 .jar ,其中包含我想要访问的主类。然而我却没能做到。

我第一次尝试修改MANIFEST,但java总是提示

Error: Could not find or load main class

所以我直接开始使用 -classpath 标志,如下所示:

java -classpath add2.jar add2.AddClass

但是,它仍然给我同样的错误。如果我执行 jar tvf add2.jar ,它将给出以下输出:

     0 Tue Jun 30 11:49:48 COT 2015 META-INF/
95 Tue Jun 30 11:49:48 COT 2015 META-INF/MANIFEST.MF
0 Fri Dec 05 09:09:22 COT 2014 add2/
169482 Fri Dec 05 09:09:18 COT 2014 add2/add2.ctf
1786 Fri Dec 05 09:09:22 COT 2014 add2/Add2MCRFactory.class
3848 Fri Dec 05 09:09:22 COT 2014 add2/AddClass.class
318 Fri Dec 05 09:09:22 COT 2014 add2/AddClassRemote.class
12288 Tue Jun 30 11:49:44 COT 2015 META-INF/.MANIFEST.MF.swp

所以我怀疑 add2.AddClass 实际上存在。我也尝试过 AddClass 没有包,但没有成功。

编辑

我通过使用 jar 命令解压并压缩 .jar 来修改 MANIFEST

如果我解压缩.jar。并执行javap add2/AddClass.class我会得到:

Compiled from "AddClass.java"
public class add2.AddClass extends com.mathworks.toolbox.javabuilder.internal.MWComponentInstance<add2.AddClass> {
public add2.AddClass() throws com.mathworks.toolbox.javabuilder.MWException;
...
public static void main(java.lang.String[]);
...
static {};
}

最佳答案

原因是,您的AddClass继承自com.mathworks...类。但是您没有将此类添加到类路径中。要生成打包的 jar 文件,您需要使用特殊的类加载器,例如 onejar ( http://one-jar.sourceforge.net/ )。否则,只需将缺少的 jar 添加到 -cp 类路径列表中。

这里的示例不会抛出 ClassNotFound 异常,但会抛出 无法找到或加载主类 错误。

  • 编译类Test和Test2
  • 从类路径中删除 Test2
  • 运行java -cp 。测试

主类将不会被加载。

import bla.Test2;

public class Test extends Test2 {

public static void main(String[] args) {
String test = "TEST1";

System.out.println(test);

}
}

其中 Test2.java

package bla;

public class Test2 {
public Test2() {
String test = "TEST2";

System.out.println(test);
}
}

关于java - 尽管 .jar 包含文件,但在 .jar 文件中找不到主类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31147841/

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