我有一个 jar 文件,但清单中没有指定它的主类。所以我按照这里给出的答案:
如何从 Jar 运行一个不在其 Manifest 文件中的 Main-Class 的类
它似乎试图从这个类中运行 main 。但是,由于某种原因,从这个 jar 文件中导入其他一些类似乎被破坏了。
这是我的问题的最小化版本:
jar tf test.jar
给出:
META-INF/
META-INF/MANIFEST.MF
ClassIWantToRun.class
something/
something/something/
something/something/something/ClassA.class
用 jd-gui 查看的 ClassIWantToRun.class 的来源似乎是:
import something.something.something.ClassA;
public class ClassIWantToRun
{
public static void main(String[] args)
{
int x = ClassA.comeMethod();
}
}
运行这个:
java -cp test.jar ClassIWantToRun
给我一个例外:
Exception in thread "main" java.lang.NoClassDefFoundError: com/ibm/OS4690/FlexosException
at ClassIWantToRun.main(ClassIWantToRun.java:7)
Caused by: java.lang.ClassNotFoundException: com.ibm.OS4690.FlexosException
at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
... 1 more
我只知道 Java 的基础知识,但似乎即使使用以下行也找不到 ClassA: import something.something.something.ClassA 我怎样才能让它运行?