我知道这已经是一个非常古老而常见的问题了,但我仍然无法让它发挥作用!
我正在使用Intellij在Windows 7上开发Java程序,我在编译时添加工件的文件输出以生成jar。该程序在IDE中运行良好,现在我想在没有IDE的情况下在命令行中运行它。
目录结构如下:
项目
-out
--ProjectName
---project.jar
-lib (under lib there are all the jar libraries used in the project)
-..
(希望你能理解上面说明的结构)
所以我进入project.jar所在的目录,输入以下内容:
java -cp ..\..\..\lib -jar project.jar
我收到异常NoClassDefFoundError
的错误消息,但实际上该类包含在lib目录下的jar中。
这应该很简单,但我不能让它发挥作用。
请帮忙!非常感谢!
答案 0 :(得分:1)
我遇到了类似的问题..并找到了一个解决方案..我不确定这是否已经给出..如果忽略这个.. 该场景基于Maven包文件(jar)与JAVA学习者的类名一起运行。 因此,对于此使用命令: java -classpath jarfile packagename.classname 例如:java -classpath target \ MavenTest-1.0-SNAPSHOT.jar org.first.edu.App
答案 1 :(得分:0)
如果您不想单独列出所有广告,请尝试java -cp ..\..\..\lib\*.jar -jar project.jar
答案 2 :(得分:0)
我发现了问题和解决方案。如果我使用-jar参数运行project.jar,则忽略-classpath参数,反之亦然。所以我在.jar文件中添加了类路径(通过Intellij中的类路径文本框完成),并尝试了几次。最后我发现,我需要指定以点开头的类路径!!!这意味着相对路径从当前目录开始,并且更进一步。这是非常令人惊讶的,因为我认为指示当前目录的强制点仅用于Linux(当我使用Windows时)。似乎Java以不同的方式处理它。
答案 3 :(得分:0)
首先确保您从保存jar 的目录中运行命令,然后在命令提示符中输入以下命令:
java -cp“< -Your Jar Name:Jar Lib>” < -Your Package name and main class->
例如: -
java -cp“project.jar:lib / *”com / foo / bar / main