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
}
}
# 1 楼答案
以下语句解决了我的错误:
# 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 楼答案
Java运行时(在您的例子中是Java.exe命令)将包含main()方法的类文件名作为输入。我想您应该以“javabin\main”的形式调用它,假设有一个main。类,该类定义了公共静态void main(String[])方法
注:一般做法是将任何类名的第一个文本大写
# 4 楼答案
java bin/main.Main
错误,必须在此处指定-cp
:这里的第一个参数是类名,它应该在类路径中找到,而不是类文件位置。而
-cp
只是将逻辑路径添加到类路径。您应该在类路径中搜索项目的根对于那些javac命令,您已经指定了正确的路径,因此不需要
-cp src
。这里的区别是javac命令使用.java
文件的逻辑路径,而使用java命令只能在-cp
属性中指定路径如果输入目录
bin
,也可以在不执行-cp
的情况下执行java main.Main
:因为当前路径将被java自动搜索为类路径
# 5 楼答案
当Java虚拟机无法在运行时找到编译时可用的特定类时,Java中的
NoClassDefFoundError
例如,如果我们有一个来自类的方法调用或访问类的任何静态成员,而该类在运行时不可用,那么JVM将抛出
NoClassDefFoundError
默认情况下,Java
CLASSPATH
指向当前目录,用“.”表示它将只在当前目录中查找任何类因此,您需要在运行时向
CLASSPATH
添加其他路径。阅读更多Setting the classpathjava -cp bin main.Main
其中
Main.class
包含public static void main(String []arg)
# 6 楼答案
假设您有一个名为Main的类,则必须使用以下命令运行该类:
它将调用您的主方法