如何从其他目录运行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“$ CWD / 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