【问题标题】:NoClassDefFoundError when running a java class through the command prompt通过命令提示符运行 java 类时出现 NoClassDefFoundError
【发布时间】:2018-01-16 23:48:44
【问题描述】:

我刚刚使用 IntelliJ 完成了一个相当大的项目,并说我会为没有 IDE 的人提供命令行语句来运行它(该项目将由不同的人在不同的机器上运行等)。我有一段时间没有使用命令行了,所以我有点生疏了。我得到了一个 NoClassDefFoundError:wrong name 并且我一直在查看有关 S/O 的问题,例如 Why am I getting a NoClassDefFoundError in Java? 但这些似乎并不能解决我的问题。我正在使用很多外部库,但在尝试运行时我已正确导入它们。编译了很多类,但只有一个会运行,所以我假设我只在 Main 类上运行“java”命令

java -cp .;poi-3.17/lib/comms-codec-1.10.jar;poi-3.17/lib/commons-collections4-4.1.jar;poi-3.17/lib/commons-logging-1.2.jar;poi-3.17/lib/ junit-4.12.jar;poi-3.17/lib/log4j-1.2.17.jar;poi-3.17/ooxml-lib/curvesapi-1.04.jar;poi-3.17/ooxml-lib/xmlbeans-2.6.0.jar; poi-3.17/poi-3.17.jar;poi-3.17/poi-ooxml-3.17.jar bin/com/company/Main

以上是我一直在努力的工作,所以任何关于我可能做错的建议都将不胜感激

整个异常是“错误:无法找到或加载主类Main 引起:java.lang.NoClassDefFoundError: com/company/Main (错误名称:Main)"

注意,我用的是windows

【问题讨论】:

  • 请发布整个异常和主类声明。

标签: java noclassdeffounderror


【解决方案1】:

@caius-brindescu 是对的,您必须指定 com.company.Main 之类的类,但您还必须从 bin 目录内部执行该类。因此,运行“cd bin”,然后运行您的命令,它应该可以工作。 之所以这样,是因为您的 PATH 以点 '.' 开头。这意味着在这个目录中

【讨论】:

    【解决方案2】:

    首先,-cp 参数的 jar 文件的分隔符是冒号 (:),而不是分号 (;)。使用分号会改变参数的解析方式。

    此外,当您运行主类时,您必须指定完全限定名称 (com.company.Main),而不是类文件的路径。类文件将从 -cp 参数解析。

    【讨论】:

    • 不对。这取决于操作系统。 : 用于基于 unix 的操作系统,; 用于基于 Windows 的操作系统。
    • @davidxxx 抱歉,我已经更新了问题,我使用的是 windows
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-05
    • 1970-01-01
    • 2019-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多