Java 从命令行运行,名称错误错误
我想从命令行运行一个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
- 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
默认情况下,JavaCLASSPATH
指向以“.”表示的当前目录,它将只在当前目录中查找任何类
因此,您需要在运行时将其他路径添加到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