【问题标题】:Java not able to load a class from class pathJava 无法从类路径加载类
【发布时间】:2021-04-21 05:10:29
【问题描述】:

我在类路径中添加了一个 jar,例如:

export CLASSPATH="/Users/myname/.m2/repository/org/testng/testng/7.3.0/testng-7.3.0.jar";

当我回应它时,我得到了那个罐子。

但是,我正在运行我的 jar:

java -cp target/TestNgExample-1.0-SNAPSHOT.jar:myname org.testng.TestNG testng.xml

但我明白了:

Error: Could not find or load main class org.testng.TestNG
Caused by: java.lang.ClassNotFoundException: org.testng.TestNG

如您所见,我将那个 jar 添加到类路径中,但仍然无法使用它。

有什么帮助吗?

【问题讨论】:

    标签: java jar classpath javac


    【解决方案1】:

    首先:强烈建议不要使用CLASSPATH 环境变量。

    但是,as documented in the manual 在命令行上提供 -cp(或 --class-path)参数会覆盖 CLASSPATH 内容

    指定类路径会覆盖 CLASSPATH 环境变量的任何设置。如果未使用类路径选项且未设置类路径,则用户类路径由当前目录 (.) 组成。


    要将 TestNG jar 文件包含到您的类路径中,请将其包含在 -cp 参数中:

    java -cp target/TestNgExample-1.0-SNAPSHOT.jar:/Users/myname/.m2/repository/org/testng/testng/7.3.0/testng-7.3.0.jar org.testng.TestNG testng.xml
    

    【讨论】:

    • 如何使用类路径环境?
    • @MarcoDinatsoli:您需要从命令行中删除 -cp 参数。但我真的建议不要设置 CLASSPATH。最好始终使用-cp 参数指定特定于应用程序的类路径
    • 也许我可以把这两个罐子传给这个-cp。我试过这个 java -cp first.jar;second.jar 但没有用。你知道吗?
    • @MarcoDinatsoli:您需要使用-cp 参数列出您的应用程序需要的所有jar 文件
    • @MarcoDinatsoli:分隔符取决于您使用的操作系统。在 Windows 上,分隔符是 ;(所以您发布的内容应该可以使用)。在其他一切(包括 Linux 和 MacOS X)上,它是 :,所以你会使用 -cp first.jar:second.jar
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多