在目录名称中存在句点时使用Java.exe运行

lom*_*i26 3 java directory period

我正在尝试运行我已构建的java编程,但我想从特定目录运行它.当指定我想要运行的类文件的相对路径时,该路径包含一个带有句点的目录,它似乎正在绊倒java; 所以例如我尝试运行:

java -classpath myPath/myPath-1.2.3/myLongPath myPath/myPath-1.2.3/myLongPath/myProg
Run Code Online (Sandbox Code Playgroud)

Java错误说它无法找到类(NoClassDefFoundError); 这是有道理的,因为我看到java正在寻找与我指定的目录不同的目录; 它正在寻找:myPath/myPath-1/2/3/myLongPath而不是:myPath/myPath-1.2.3/myLongPath

尽我所能,我无法弄清楚如何指定java.exe我希望它查找的目录包含句点.我试图逃避时期,但这没有帮助.有人遇到过这个问题吗?顺便说一下,我在gnome终端上运行linux.谢谢你的帮助.

Thi*_*ilo 8

调用java的最后一个参数是要运行的类的名称.这不是文件名,而是类名.它包括完整的包名称(除非该类在默认包中),由点(不是斜杠)分隔.类名和任何包名都不能包含点.表示程序包路径的文件夹不得包含在类路径中包含的目录中(只有类文件夹的顶级目录应该在那里).

在你的情况下,这似乎只是myProg,但为了确保,使用main方法的类的类名(包括包名)是什么?

例:

如果我有一个类mypackage.mysubpackage.MainClass,并且类文件在/home/me/project/1.3/build/mypackage/mysubpackage/MainClass.class,那么运行该类的命令就是java -cp /home/me/project/1.3/build mypackage.mysubpackage.MainClass.