【发布时间】:2018-01-21 00:21:41
【问题描述】:
我有一个带有 main 方法的类。当我使用 Windows 命令行运行类的 main 方法时,使用“javac”命令的编译过程运行良好(命令行的当前位置 - 包含此类的目录)。名为“Card.class”的文件几乎被创建为“Card.java”文件。但是命令“java Card”返回错误,描述为“找不到或加载主类”。在 Intellij Idea 中,这个类中的方法运行良好。
我试图解决这个问题的方法(一些解决方案取自 StackOverflow 主题):
1)完全重新安装JDK和JRE。
2)重写了我所有的环境变量:
JAVA_HOME = C:\Program Files\Java\jdk1.8.0_144
JDK_HOME = %JAVA_HOME%
PATH = C:\Program Files\Java\jdk1.8.0_144\bin
CLASSPATH = %JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\jre\lib\tools.jar
3)我为“CLASSPATH”环境变量尝试了不同的变体。另外,我手动写了这个:“java -classpath "$s" Card”,其中“-classpath”参数的值是我从 Intellij Idea 命令复制的,在 IDE 中运行程序后返回。
4) 尝试了命令中类名的一些变体(仅来自“java Card” 到源项目目录中的“java package_name.Card”)。所有这些变体都被命令行识别,返回相同的错误。
我认为是“类路径”变量的问题,但我发现的所有解决方案都在为这个变量建议不同的值,并且其中任何一个都有效。变量的最后更新值前面提到过。
这是我的课(可能问题出在这里):
package cards;
public class Card {
//Constants, constructor, getters, setters, validation checking methods
public static void main(String[] args) {
// Just to see in the command line that the method was invoked
System.out.println("WORK");
// "assert" checks for constants values
}
}
我的错误的堆栈跟踪:
myPathToTheProject\src\cards>java 卡片
错误:无法找到或加载主类卡
【问题讨论】:
-
请重新格式化您的代码,以便于阅读。
-
我之前试过这个命令,当时命令行的“位置”在项目的源文件夹(src)中:“java cards.Card”。它不起作用。但是当我手动添加 -cp
作为命令参数时它确实如此。所以,Tuyen Nguyen 的解决方案真的很有帮助。那是我的 CLASSPATH 环境变量有问题,显然有可能发生在其他人身上。这里有类似的问题:stackoverflow.com/questions/18093928/…,最佳答案(加上两个最高票)正在描述另一个解决方案。
标签: java console environment-variables classpath javac