我有一个jar文件没有在manifest中指定它的主类.所以我按照这里给出的答案:
如何从Jar运行一个类,它不是Manifest文件中的Main-Class
它似乎试图从这个类运行main.但是,由于某种原因,从这个jar文件中导入其他类似乎已被破坏.
这是我的问题的最小化版本:
jar tf test.jar
Run Code Online (Sandbox Code Playgroud)
得到:
META-INF/
META-INF/MANIFEST.MF
ClassIWantToRun.class
something/
something/something/
something/something/something/ClassA.class
Run Code Online (Sandbox Code Playgroud)
用jd-gui查看的ClassIWantToRun.class的来源似乎是:
import something.something.something.ClassA;
public class ClassIWantToRun
{
public static void main(String[] args)
{
int x = ClassA.comeMethod();
}
}
Run Code Online (Sandbox Code Playgroud)
运行此:
java -cp test.jar ClassIWantToRun
Run Code Online (Sandbox Code Playgroud)
给了我例外:
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
Run Code Online (Sandbox Code Playgroud)
我只知道Java的基础知识,但似乎即使使用以下行也无法找到ClassA:import something.something.something.ClassA如何才能运行?
小智 5
该异常表示您需要将其他一些JAR添加到类路径中.test.jar中的类依赖于其他类.例如,在com.ibm.OS4690.FlexosException上.
您可以尝试搜索另一个JAR文件(在您的test.jar所在的位置),以便它包含FlexosException.class文件.找到后,运行test.jar
java -cp test.jar;<path_to_another_jar_here> ClassIWantToRun
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
18286 次 |
最近记录: |