java - 从 jar 文件运行特定类的主要功能。导入似乎不起作用

标签 java import jar

我有一个 jar 文件,但没有在 list 中指定其主类。 所以我遵循了这里给出的答案:

How to run a class from Jar which is not the Main-Class in its Manifest file

它似乎试图从这个类运行 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):

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 我该如何运行?

最佳答案

该异常表明您需要将一些其他 JAR 添加到类路径中。 test.jar 中的类依赖于其他类。例如在 com.ibm.OS4690.FlexosException 上。

您可以尝试搜索另一个 JAR 文件(与您放置 test.jar 的位置相同),以便它包含 FlexosException.class 文件。找到它后,将 test.jar 运行为

java -cp test.jar;<path_to_another_jar_here> ClassIWantToRun

关于java - 从 jar 文件运行特定类的主要功能。导入似乎不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14400176/

相关文章:

python - 在 VS CODE 中设置 cwd

java - 为什么我们需要 war ?如果我们可以创建 JAR 并将其部署到 servlet 容器上

java - 类路径条目 my.jar 未指向类路径引用的有效 jar

java - 加载 spring xml 抛出 SAXParseException

java - 映射器和缩减器的数量。这是什么意思?

typescript - 如果我的所有导入都来 self 自己的文件,我是否需要使用 TypeScript 3.8 的 "import type"功能?

python - 为什么在使用 execfile() 运行的 python 脚本中 import 不能防止 NameError?

java - 在哪里可以找到quartz-all-2.2.1.jar 文件

java - java nio ServerSocketChannel accept 如何工作?

java - 多线程 python/ruby vs java?