【问题标题】:How to run a java class with a jar in the classpath?如何在类路径中运行带有 jar 的 java 类?
【发布时间】:2011-06-20 09:54:53
【问题描述】:

所以,我可以很好地做到这一点:

java mypackage.MyClass

如果./mypackage/MyClass.class 存在。我也可以愉快地这样做:

java -cp myjar.jar mypackage.MyClass

如果类文件存在于 jar 的适当部分。容易的东西。但我一辈子都做不到这样的事情:

java -cp utilities.jar mypackage.MyClass

./mypackage/MyClass.class 存在的位置,./utilities.jar 的存在位置(当然不包含 MyClass)。

我会觉得自己很愚蠢吗?

【问题讨论】:

    标签: java classpath


    【解决方案1】:

    可能:)

    # On Unix
    java -cp utilities.jar:. mypackage.MyClass
    
    # On Windows
    java -cp utilities.jar;. mypackage.MyClass
    

    基本上这只是在类路径和 jar 文件中包含 .(当前目录)。

    【讨论】:

    • -cp-classpath 的简写形式吗?
    • @overexchange:是​​的。 (运行java -? 会告诉你。)
    • 这对我不起作用....java -cp argparse4j-0.9.0.jar:. Demo Error: Could not find or load main class Demo Caused by: java.lang.ClassNotFoundException: Demo
    • @rica01:Demo.class 在当前目录中吗?仅凭这一点,我们真的不能说太多。 (您使用的是什么操作系统?)
    • 是的。老实说,我放弃了这一点,它花费了太多时间来做一些应该非常简单的事情。无论如何,谢谢乔恩!
    【解决方案2】:

    如果你在 Windows 上试试这个:

    java -cp .;utilities.jar mypackage.MyClass
    

    如果你在 Linux 上,或者这个:

    java -cp .:utilities.jar mypackage.MyClass
    

    -cp指定值时,默认情况下当前目录不在CLASSPATH中。

    【讨论】:

    • 不,当前目录默认的classpath;只有当你指定一个不同的类路径时你才会遇到问题。
    • @Vuntic:那肯定是准确的。也许@duffymo 想编辑该措辞:)
    【解决方案3】:

    您应该将mypackage.MyClass 包含在CLASSPATH-cp 参数中。 例如:

    java -cp utilities.jar;myjar.jar mypackage.MyClass
    

    路径分隔符在 Windows 上为 ;,在 Unix/Linux 上为 :

    【讨论】:

    • 我可以做得很好; MyClass 在一个独立的类文件中,而不是 myjar.jar
    猜你喜欢
    • 2011-01-08
    • 2017-10-06
    • 2017-02-04
    • 2015-01-18
    • 1970-01-01
    • 1970-01-01
    • 2011-04-30
    • 2016-09-04
    • 1970-01-01
    相关资源
    最近更新 更多