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

我有一个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 

产生相同的结果。

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

 java -classpath commandprogram CommandProgram 

要么

 java -classpath directory_to_program Program 

在尝试了我能想到的所有内容后,我回应了命令,发现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解决方案解决了这个问题,但后来稍微改变了我的脚本,并没有注意到路径问题又回来了。

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

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

运行java文件的常用方法是将其保存在Java/Bin文件夹和Run 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