我有一个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
产生相同的结果。
答案 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“$ CWD / 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