在Windows上的命令行中运行jar(Classpath)

时间:2013-08-09 17:50:35

标签: java windows classpath

我知道这已经是一个非常古老而常见的问题了,但我仍然无法让它发挥作用!

我正在使用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中。

这应该很简单,但我不能让它发挥作用。

请帮忙!非常感谢!

4 个答案:

答案 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