【问题标题】:Java class not found未找到 Java 类
【发布时间】:2011-08-24 09:46:57
【问题描述】:

我正在尝试从 jar 文件运行 java 程序。 Java 找不到支持的 marc4j 类。我究竟做错了什么。以下是详细信息

在我的当前直接是MarcTry.jar,它有我的主要课程。还有一个缺少类的 marc4j.jar:

org/marc4j/MarcReader

例如:

java -jar MarcTry.jar 线程“主”java.lang.NoClassDefFoundError 中的异常:org/marc4j/MarcReader 引起:java.lang.ClassNotFoundException:org.marc4j.MarcReader 在 java.net.URLClassLoader$1.run(URLClassLoader.java:202) 在 java.security.AccessController.doPrivileged(本机方法) 在 java.net.URLClassLoader.findClass(URLClassLoader.java:190) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:307) 在 sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:248) 找不到主类:marctry.Main。程序将退出。

我试过了

java -jar MarcTry.jar -classpath marc4j.jar

带和不带 marc4j.jar 的完全限定路径。

欢迎任何想法。

【问题讨论】:

    标签: java jar classpath


    【解决方案1】:

    当您使用“-jar”开关时,类路径将被忽略。使用“-classpath”指定两个 jar 并使用完全限定名称执行主类。

    例如 java -cp MarcTry.jar;marc4j.jar com.domain.MainClass

    .. 或者将 marc4j.jar 添加到 MarcTry.jar 清单文件中的类路径条目

    您可以在此处阅读有关将 jars 添加到清单文件的类路径的信息:Adding Classes to the JAR File's Classpath

    【讨论】:

    • 我认为这解决了我的问题谢谢!现在缺少一个不同的课程,但我知道接下来如何解决这个问题。 (您答案中的分号是错字。冒号有效。)
    • 冒号与分号是平台特定的
    • 太棒了!如果需要,您可以将此答案标记为正确。这将向其他人表明该问题已得到回答。
    • ;适用于 Windows, : 适用于 Linux。
    • @Jeff Storey 和 @Bhushan。是的,我知道,我猜 OP 也明白,如果他在 *nix 上,他需要改变这一点。
    【解决方案2】:
    java -cp <complete path for your supporting jar>;<your jar which you want to run>
    

    (为了安全起见,将两个罐子放在同一个文件夹中)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-25
      • 2016-12-31
      • 1970-01-01
      • 1970-01-01
      • 2015-06-23
      • 2017-08-02
      • 2021-04-14
      • 2015-05-11
      相关资源
      最近更新 更多