繁体   English   中英

Java Classpath 不使用当前目录

[英]Java Classpath not using current directory

是的......再次关于类路径的问题。 我使用命令javac Main.java编译了类文件,然后我尝试通过java Main执行它你怎么看? 我得到了那个著名的错误: Error: Could not find or load main class Main 为什么? 我将类路径环境变量设置为“.;” (当然没有“)。怎么了?我使用jdk 1.8.0_51。在IDE中(我使用intellij idea 2021.3)一切正常。唯一导入的类是java.io.File。它只有在我使用命令运行时才有效java -cp <path to dir not including package folders> <full qualified class name> Windows 8.1

依赖CLASSPATH系统变量是个坏主意。 一台机器可用于运行许多不同的应用程序,因此“全局设置”的概念是愚蠢的。

尝试java -cp . Main java -cp . Main

如果那确实有效

然后你一直在弄乱你的CLASSPATH环境变量并删除了. 从中。 放回去。 或者更好的是忘记 CLASSPATH; 始终使用-cp 使用-cp . 如果你喜欢。 或者制作jar文件并使用java -jar thejar.jar运行它们,它会忽略CLASSPATH-cp参数(而不是查看 jar 清单中的Class-Path条目)。

如果这不起作用

然后你不在适当的目录中。 或者,您对软件包感到困惑。 假设您的Main.java如下所示:

package com.foo;

public class Main {
  public static void main(String[] args) {
    System.out.println("Hello");
  }
}

然后你编译它; 出现一个Main.class文件。

java不能运行它,除非Main.class位于名为foo的目录中,而该目录又位于名为com的目录中。 然后,将包含com的目录放在类路径中。 不是包含Main.class的目录。 然后你运行java -cp theDirThatContainsCom com.foo.Main java -(does not matter what you try it cannot be done) Main Main——因为你提供了你想运行的类的全名java ,全名是com.foo.Main

当前目录 ( . ) 是默认的类路径。 但它不会自动包含子目录。 因此,如果您有包,则应将目录显式添加到类路径中。

在此处查看更多信息未指定类路径时,默认类路径是什么?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM