【问题标题】:program compiles but won't run in command box程序编译但不会在命令框中运行
【发布时间】:2013-12-13 12:18:17
【问题描述】:

每次我尝试在命令提示符下运行 java 程序时,它都会显示“找不到或无法加载主类。

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

javac -d ../classes A.java 编译成功

然后尝试在类文件夹中运行

java 一个

我收到了消息 “无法找到或加载主类 A”

【问题讨论】:

  • 这不是必需的。 echo 'class a{public static void main(String[]_){System.exit(42);}}'>a.java&& javac a.java&&java a;echo $?42
  • 是整个文件吗?以防万一,如果您在顶部有 package foo 语句,则需要 java foo.A
  • 我的所有程序都给出了相同的信息。我可以在没有类路径的情况下运行这些程序
  • @shahim 您很可能没有将类文件输出到classes 文件夹
  • @Vlad 是的。没有包

标签: java windows editplus


【解决方案1】:

classes 文件夹添加到类路径

java -cp ../classes A

【讨论】:

  • OP 说它们在“classes”文件夹中。您不需要将当前文件夹添加到类路径中。这个答案不会有丝毫不同。 -1.
  • 每个项目都需要它吗?我的所有程序都给出了相同的信息。我可以在没有类路径的情况下运行这些程序
  • 是的,如果您想在classes 文件夹以外的目录中运行应用程序
  • @DavidWallace 是的,它会在OP 不在classes 文件夹中的第一种情况下产生影响
  • 但我告诉我可以像我一样运行这些程序。但现在我不能。
【解决方案2】:

您正在使用-d 选项进行编译。因此将创建包结构。如果您的类被打包,那么您必须使用完全限定的类名意味着outerpackage.innerpackge.A

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-16
    • 1970-01-01
    相关资源
    最近更新 更多