有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java从命令行运行,名称错误错误

我想从命令行运行一个Java项目,我开始使用批处理文件,但是我得到了错误的名称错误

目录设置:

  • srcMVC
    • bin(包含.class文件的文件夹)
    • src(包含.java文件的文件夹)
    • 批处理文件

批处理文件:

set path=C:\Program Files\Java\jdk1.7.0_09\bin
javac src\model\*.java -d bin -cp src
javac src\controller\*.java -d bin -cp src
javac src\view\*.java -d bin -cp src
javac src\main\*.java -d bin -cp src
PAUSE
java bin\main.Main
PAUSE

编译工作正常,但出现以下错误:

Exception in thread "main" java.lang.NoClassDefFoundError: bin\main/Main (wrong name: main/Main)             

有什么建议吗


package main;

// omitted imports

public class Main {
    // omitted variables

    public static void main(String[] args) {
        // omitted implementation   
    }
}

共 (6) 个答案

  1. # 1 楼答案

    以下语句解决了我的错误:

    java -cp bin; main.Main
    
  2. # 2 楼答案

    您错误地退出了java bin\main。主要

    main()是您的主方法,但是您应该提供java解释器Class Name,它实现main()的

    所以,如果类名是Test,文件名是Test。具有main()方法的java

    java Test

    如果你的测试。java/测试类在我的包中。测试例如-package com.my.test;

    java com.my.test.Test

    希望你得到它

  3. # 3 楼答案

    Java运行时(在您的例子中是Java.exe命令)将包含main()方法的类文件名作为输入。我想您应该以“javabin\main”的形式调用它,假设有一个main。类,该类定义了公共静态void main(String[])方法

    注:一般做法是将任何类名的第一个文本大写

  4. # 4 楼答案

    java bin/main.Main错误,必须在此处指定-cp

    java main.Main -cp bin
    

    这里的第一个参数是类名,它应该在类路径中找到,而不是类文件位置。而-cp只是将逻辑路径添加到类路径。您应该在类路径中搜索项目的根

    对于那些javac命令,您已经指定了正确的路径,因此不需要-cp src。这里的区别是javac命令使用.java文件的逻辑路径,而使用java命令只能在-cp属性中指定路径

    如果输入目录bin,也可以在不执行-cp的情况下执行java main.Main

    cd bin
    java main.Main
    

    因为当前路径将被java自动搜索为类路径

  5. # 5 楼答案

    当Java虚拟机无法在运行时找到编译时可用的特定类时,Java中的NoClassDefFoundError

    例如,如果我们有一个来自类的方法调用或访问类的任何静态成员,而该类在运行时不可用,那么JVM将抛出NoClassDefFoundError

    默认情况下,JavaCLASSPATH指向当前目录,用“.”表示它将只在当前目录中查找任何类

    因此,您需要在运行时向CLASSPATH添加其他路径。阅读更多Setting the classpath

    java -cp bin main.Main

    其中Main.class包含public static void main(String []arg)

  6. # 6 楼答案

    假设您有一个名为Main的类,则必须使用以下命令运行该类:

    java bin\Main
    

    它将调用您的主方法