如何从其他目录运行java程序?

时间:2009-07-27 19:10:27

标签: java bash scripting cygwin

我有一个java程序,我希望能够在我的机器上的任何地方运行。我想从我的Cygwin命令提示符运行它。我已经制作了脚本来调用java程序。我将java程序的位置添加到类路径中,当我从java程序的目录运行它们时脚本工作。但是,当我尝试从任何其他目录运行时,我得到:

java.lang.NoClassDefFoundError: commandprogram/CommandProgram

这是我的剧本:

#!/bin/sh
CWD=`dirname "$0"`
java -cp "$CWD/classes;$CWD/lib/AJarFile.jar" commandprogram/CommandProgram

将java行更改为以下内容:

java -cp "$CWD/classes;$CWD/classes/commandprogram;$CWD/lib/AJarFile.jar" CommandProgram

产生相同的结果。

4 个答案:

答案 0 :(得分:24)

将您的目录添加到classpath示例:

java -classpath commandprogram CommandProgram

java -classpath directory_to_program Program

答案 1 :(得分:3)

在尝试了我能想到的一切之后,我回应了命令,发现Cygwin路径和Windows路径混合在一起。解决方案是将脚本更改为:

#!/bin/sh
CWD=`dirname "$0"`
CWD=`cygpath -w "$CWD"`
java -cp "$CWD/classes;$CWD/lib/AJarFile.jar" commandprogram/CommandProgram

然后CWD改为“C:\ Program Files \ ...”而不是“/ cygdrive / c / Program \ Files /...”

我之前遇到过这个问题,并使用cygpath -w解决方案解决了这个问题,但后来稍微更改了我的脚本,并没有注意到路径问题又回来了。

答案 2 :(得分:1)

你必须使用一个点来分隔包,而不是斜杠。

  

java -cp“$ C​​WD / classes; $ CWD / lib / AJarFile.jar”commandprogram.CommandProgram

答案 3 :(得分:-5)

运行java文件的常用方法是将其保存在Java/Bin文件夹中并运行cmd

C:\Program Files\Java\jdk1.7.0_05\bin> javac filename.java && java classname

如果将文件保存在D:等其他目录中,则可以在cmd提示符下使用以下命令:

D:\Project java> set path=%path%;C:Program Files\Java\jdk1.7.0_05\bin