我有一个.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
没有包裹,没有运气。
我通过使用MANIFEST
命令解压缩.jar
来修改jar
。
如果我解压缩.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 {};
}
答案 0 :(得分:2)
原因是,您的AddClass
继承自com.mathworks...
类..但您没有将此类添加到类路径中。要生成打包的jar文件,您需要使用像onejar(http://one-jar.sourceforge.net/)这样的特殊类加载器。否则只需将缺少的jar添加到-cp
类路径列表中。
这里的示例不会抛出ClassNotFound
异常,而是Main class cannot be found or loaded
错误。
java -cp . Test
不会加载Mainclass。
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);
}
}