【问题标题】:java console error could not find or load main class [closed]java控制台错误找不到或加载主类[关闭]
【发布时间】: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


【解决方案1】:

在你有 Card.class 的位置打开 CMD

 set CLASSPATH=""
 java Card

我假设您在 Card.java 上没有包减速

【讨论】:

  • naa,同样的错误出现了。
  • 另外你贴的代码不包含包声明,问题很相似。如果你有包减速让我们在你的类中说“包卡”,你可以像 javac Card.java 一样编译它而不会出现问题。但是如果你尝试运行它,它会抛出异常“main not found”,你需要上一层执行“java card.Card”。不知道还会发生什么。
  • 我也厌倦了这些变化,正如我在问题中描述的那样,但如果不将类路径设置为项目的源文件夹,它就没有帮助
  • 您发布的原始代码没有“包裹卡;”。正如我提到的问题是“你发布的代码也不包含包声明,问题非常相似。如果你有包声明,让你在你的类中说“包卡”,你可以像 javac Card.java 一样编译它没有问题。但是如果你尝试运行它,它会抛出异常“main not found”,你需要上一层并执行“java card.Card”。”
  • 我不明白你对“包裹减速”有什么看法。在你说“声明”之后,我更新了我的问题。顺便说一句:screenshot.su/show.php?img=1cf41c141fdc9bd60056965b7ba6793f.jpg
【解决方案2】:

让我们在运行前正确设置类路径。这对我来说很好:java -cp ./ Cardjava -cp . Card。部分:-cp .-cp ./ 用于将类路径设置为当前文件夹。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-17
    • 1970-01-01
    • 2018-09-30
    • 2017-07-31
    • 1970-01-01
    • 2014-03-28
    • 2014-11-18
    相关资源
    最近更新 更多