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

2022-09-02 10:17:05

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

产生相同的结果。


答案 1

将目录添加到类路径示例:

java -classpath commandprogram CommandProgram

java -classpath directory_to_program Program

答案 2

在尝试了几乎所有我能想到的东西之后,我回响了命令,发现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


推荐