Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从命令行运行,名称错误错误_Java_Command Line_Javac - Fatal编程技术网

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

Java 从命令行运行,名称错误错误,java,command-line,javac,Java,Command Line,Javac,我想从命令行运行一个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\v

我想从命令行运行一个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)             
有什么建议吗



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

java bin\Main

它将调用您的main方法。

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

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

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

因此,您需要在运行时将其他路径添加到
CLASSPATH
。阅读更多

java-cp bin main.main


其中
Main.class
包含
publicstaticvoidmain(String[]arg)
您错误地退出了javabin\Main.Main

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

所以,如果类名是Test,文件名是Test.java,它有main()方法

java测试

如果您的Test.java/Test类在package my.Test中,例如-
package com.my.Test

而不是,
javacom.my.test.test

希望你得到它

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


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

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

java -cp bin; main.Main

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

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

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

如果输入目录
bin
,也可以执行
java main.main
而不执行
-cp

cd bin
java main.Main

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

main.java下的
main()
的签名是什么
dir
main
文件夹内的输出是什么?java-cp bin\main。main@HardikMishra公共静态void main(字符串[]args){}@NikolayKuznetsov包含.class文件?bin的主文件夹是一个文件夹。主要是一个包。main是.class文件。文件夹>包>文件我已将类名更改为Main。我运行了你的代码,我发现你在查看后忘记了一个分号。java-cp-bin;模型控制器;查看bin\main.main我看到您正在使用
-d
进行编译。您的所有类都应该在“bin”目录下。因此,您需要将“bin”添加到类路径中,为什么不显示一些在
Main
classI中使用的代码和文件,包括Main.java的内容,请参见问题。为什么省略导入?请包括它们它不应该是一个路径,它是一个类名:java-cp bin main.main它将在您指定的类路径(bin)下搜索main.main。两件不同的事情,帮助了它。非常感谢你。
cd bin
java main.Main