文件名中的java类路径冒号(";:";)

文件名中的java类路径冒号(";:";),java,command,classpath,colon,Java,Command,Classpath,Colon,我在一个文件夹中有一个jar文件,其名称中有“:”,如下所示: /Cubyz alpha 0.6.0:启蒙更新/main.jar 我想从文件夹外的from命令运行它 但它不起作用,因为冒号(“:”)是保留字符 到目前为止,我尝试了以下方法: java-jar”/home/../Cubyz-alpha 0.6.0:启蒙更新/main.jar“ java-cp/home/../Cubyz\alpha 0.6.0\:\The\indighted\Update/main.jar MainClass ja

我在一个文件夹中有一个jar文件,其名称中有“:”,如下所示:

/Cubyz alpha 0.6.0:启蒙更新/main.jar

我想从文件夹外的from命令运行它

但它不起作用,因为冒号(“:”)是保留字符

到目前为止,我尝试了以下方法:

java-jar”/home/../Cubyz-alpha 0.6.0:启蒙更新/main.jar“

java-cp/home/../Cubyz\alpha 0.6.0\:\The\indighted\Update/main.jar MainClass

java-cp”/home/../Cubyz-alpha 0.6.0:启蒙更新/main.jar“MainClass

java-cp”/home/../Cubyz alpha 0.6.0 \:启蒙更新/main.jar“MainClass

它们都输出
错误:找不到或加载主类


我有没有办法逃过“:”?

我想你使用了错误的命令。如果要运行jar文件,则可以调用以下命令:

java-jar/home/../Cubyz\alpha\0.6.0\:\The\indighted\Update/main.jar

这将使用反斜杠(\)转义字符转义空格和冒号字符

您还可以使用撇号,以便将命令视为字符串,在这种情况下,您不必转义特殊字符:

java-jar'/home/../Cubyz alpha 0.6.0:启蒙更新/main.jar'

或带引号(取决于所使用的终端/OS):


java-jar”/home/../Cubyz-alpha 0.6.0:启蒙更新/main.jar“

这是我第一次尝试的,它也不起作用。我做了一些进一步的测试,它似乎只适用于不包含“:”的文件夹。是的,如果您可以删除/替换冒号(和空格)字符,那么我建议这样做。从长远来看,这会让生活更轻松。我当然可以做到,但我希望有更好的方法。我理解。我觉得这很奇怪,因为我自己用
java-jar
命令(在Ubuntu20.04桌面版本上)尝试过,它对我很有效。我认为它也应该适用于Windows。jar文件是您创建的吗?还是其他人的(例如下载的)?因为我能想到的另一件事是META-INF/MANIFEST.MF文件中没有(正确地)设置
Main Class
头。是这样吗?这里有更多的信息,以防万一:不,事实并非如此。如果我
cd
进入目录并从那里运行
java-jarmain.jar
,一切都会正常工作。也许它在较新的java版本中得到了修复?我只在Java8和Java11上测试了它。