【问题标题】:java classpath colon(":") in file name文件名中的 java 类路径冒号(“:”)
【发布时间】:2020-10-03 18:43:48
【问题描述】:

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

/Cubyz alpha 0.6.0: The Enlightened Update/main.jar

我想通过命令从文件夹外部运行它。

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

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

java -jar "/home/…/Cubyz alpha 0.6.0: The Enlightened Update/main.jar"

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

java -cp "/home/…/Cubyz alpha 0.6.0: The Enlightened Update/main.jar" MainClass

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

全部输出Error: Could not find or load main class

有什么办法可以逃脱“:”?

【问题讨论】:

    标签: java command classpath colon


    【解决方案1】:

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

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

    这通过使用反斜杠 (\) 转义字符来转义空格和冒号字符。

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

    java -jar '/home/…/Cubyz alpha 0.6.0: The Enlightened Update/main.jar'

    或带引号(取决于所使用的终端/操作系统):

    java -jar "/home/…/Cubyz alpha 0.6.0: The Enlightened Update/main.jar"

    【讨论】:

    • 这是我最先尝试的,也没有成功。我做了一些进一步的测试,它似乎也只适用于不包含“:”的文件夹。
    • 是的,如果您可以删除/替换冒号(和空格)字符,那么我建议您这样做。从长远来看,让生活更轻松。
    • 我当然可以,但我希望有更好的方法。
    • 我明白了。我觉得这很奇怪,因为我自己使用java -jar 命令(在 Ubuntu 20.04 桌面版上)尝试过它,它对我有用。我认为它也应该适用于 Windows。 jar文件是你自己创建的吗?还是别人的(例如下载的)?因为我能想到的还有一件事是 Main-Class 标头未在 META-INF/MANIFEST.MF 文件中设置(正确)。会是这样吗?以下是有关此的更多信息,以防万一:docs.oracle.com/javase/tutorial/deployment/jar/appman.html
    • 不,事实并非如此。如果我 cd 进入目录并从那里运行 java -jar main.jar 一切正常。也许它在较新的java版本中得到了修复?我只在 java 8 和 java 11 上测试过。
    猜你喜欢
    • 1970-01-01
    • 2021-10-07
    • 2012-04-22
    • 1970-01-01
    • 2021-11-15
    • 1970-01-01
    • 1970-01-01
    • 2016-04-29
    相关资源
    最近更新 更多