NoClassDefFoundError when 运行 a java class 通过命令提示符
NoClassDefFoundError when running a java class through the command prompt
我刚刚使用 IntelliJ 完成了一个相当大的项目,我说我会为没有 IDE 到 运行 的人提供命令行语句(该项目将是 运行 在不同的机器上由不同的人等)。我已经有一段时间没有使用命令行了,所以我有点生疏了。我得到了一个 NoClassDefFoundError:wrong 的名字,我一直在查看 S/O 上的问题,例如 Why am I getting a NoClassDefFoundError in Java?,但这些似乎并不能解决我的问题。我正在使用相当多的外部库,但在尝试 运行 时我已经正确导入了它们。编译了很多 classes 但只有一个 运行 所以我想我只 运行 Main class
上的 "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
以上是我一直在努力工作的内容,如有任何关于我可能做错的建议,我们将不胜感激
整个异常是“错误:找不到或无法加载主class主
原因:java.lang.NoClassDefFoundError:com/company/Main(错误的名称:Main)
注意,我正在使用 windows
首先,-cp
参数的 jar 文件分隔符是冒号 (:),而不是分号 (;)。使用分号将改变参数的解析方式。
此外,当您 运行 主 class 时,您必须指定完全限定名称 (com.company.Main),而不是 class 文件的路径. class 文件将从 -cp
个参数解析。
@caius-brindescu 是对的,你必须像 com.company.Main 一样指定 class 而且,你必须从 里面执行 classbin目录。所以, 运行 'cd bin' 然后你的命令应该可以工作。
之所以这样,是因为您的 PATH 以点“.”开头。这意味着 在此目录中。
我刚刚使用 IntelliJ 完成了一个相当大的项目,我说我会为没有 IDE 到 运行 的人提供命令行语句(该项目将是 运行 在不同的机器上由不同的人等)。我已经有一段时间没有使用命令行了,所以我有点生疏了。我得到了一个 NoClassDefFoundError:wrong 的名字,我一直在查看 S/O 上的问题,例如 Why am I getting a NoClassDefFoundError in Java?,但这些似乎并不能解决我的问题。我正在使用相当多的外部库,但在尝试 运行 时我已经正确导入了它们。编译了很多 classes 但只有一个 运行 所以我想我只 运行 Main class
上的 "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
以上是我一直在努力工作的内容,如有任何关于我可能做错的建议,我们将不胜感激
整个异常是“错误:找不到或无法加载主class主 原因:java.lang.NoClassDefFoundError:com/company/Main(错误的名称:Main)
注意,我正在使用 windows
首先,-cp
参数的 jar 文件分隔符是冒号 (:),而不是分号 (;)。使用分号将改变参数的解析方式。
此外,当您 运行 主 class 时,您必须指定完全限定名称 (com.company.Main),而不是 class 文件的路径. class 文件将从 -cp
个参数解析。
@caius-brindescu 是对的,你必须像 com.company.Main 一样指定 class 而且,你必须从 里面执行 classbin目录。所以, 运行 'cd bin' 然后你的命令应该可以工作。 之所以这样,是因为您的 PATH 以点“.”开头。这意味着 在此目录中。