我刚刚使用IntelliJ完成了一个相当大的项目,并说我为没有IDE的人提供命令行语句来运行它(该项目将由不同的人在不同的机器上运行等) 。我暂时没有使用命令行,所以我有点生疏了。我收到了NoClassDefFoundError:错误的名字,我一直在查看有关S / O的问题,例如Why am I getting a NoClassDefFoundError in Java?,但这些似乎无法解决我的问题。我使用了很多外部库,但是在尝试运行时我已正确导入它们。编译了很多类,但只运行一个,所以我认为我只运行" java" Main类上的命令
java -cp ; POI-3.17 / LIB /通讯编解码器-1.10.jar; POI-3.17 / LIB /公地collections4-4.1.jar; POI-3.17 / LIB /共享记录-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 箱/ COM /公司/主要
以上是我一直努力工作的事情,所以对我可能做错的任何建议都表示赞赏
整个例外是"错误:无法找到或加载主类Main 引起:java.lang.NoClassDefFoundError:com / company / Main(错误名称:Main)"
注意,我使用的是Windows
答案 0 :(得分:2)
@ caius-brindescu是对的,你必须像com.company.Main那样指定类,但是你必须从里面 bin目录中执行这个类。所以,运行'cd bin'然后你的命令,它应该工作。 这是这样的,因为你的PATH以点''开头。这意味着在此目录。
答案 1 :(得分:1)
首先,-cp
参数的jar文件的分隔符是冒号(:),而不是分号(;)。使用分号将改变解析参数的方式。
此外,当您运行主类时,您必须指定完全限定名称(com.company.Main),而不是类文件的路径。类文件将从-cp
参数中解析。