![](/img/trans.png)
[英]Spring ignores property file in current directory using that in CLASSPATH instead
[英]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.