以下程序抛出错误:
public class HelloWorld {
public static void main(String args[]) {
System.out.println("Hello World!");
}
}
CLASSPATH C:\Program Files\Java\jdk1.6.0_18\bin\
Path C:\Program Files\Java\jdk1.6.0_18\bin\
JAVAHOME C:\Program Files\Java\jdk1.6.0_18\bin
你能告诉我根本原因吗?
我找到了另一个常见的原因。如果使用像eclipse这样的IDE在包内创建java文件,您将在java文件的顶部找到包名称,如“package pkgName”。如果您尝试从命令提示符运行此文件,您将收到NoClassDefFoundError错误。从java文件中删除包名称,然后使用命令提示符中的命令。为此浪费了3个小时。 - 阿比
我遇到了同样的问题,偶然发现了“Build Main Project F11”的解决方案。 ide提出了一个“选项”,我可能想要取消选中Project配置对话框的Build> Compiling部分中的'Compile on Save'。取消选中'Complile on Save',然后按常规(对我而言)'Clean and Build'为我做了诀窍。
有同样的问题尝试上面的解决方案但没有工作。我不得不通过我的java代码才发现主函数无法被识别,因为它没有空格btw和(String)即初始代码:
public static void main(String[]args){
工作代码。
public static void main (String[]args){
希望我能帮助别人。
package com.beans;
public class Flower{
.......
}
packages :=> com.beans,
java class Name:=> Flower.java,
Folder structure (assuming):=> C:\com\beans\Flower.*(both .java/.class exist here)
然后有两种执行方式:
1. Goto top Folder (here its C:\>),
then : C:> java com.beans.Flower
2. Executing from innermost folder "beans" here (C:\com\beans:>),
then: C:\com\beans:> java -cp ./../.. com.beans.Flower
在文件夹中的cmd提示符下键入以下内容:
set classpath=%classpath%;.;
我有这个错误,因为我在包中有我的文件。所以我的foo包我不得不称之为:
java foo.HelloWorld
这里的问题是设置环境和类文件的运行。一个。要设置环境路径,请运行以下命令:set path = C:\ Program Files(x86)\ Java \ jdk1.7.0 \ bin b。从包中运行程序,如com.test.TestJavaClass
命令:java com.test.TestJavaClass
这里的一般问题是我们从包内部运行它,如src / package / name。我们不应该包含src,包名就足够了。
简单易用的解决方案:我通过将原始项目导出到zip文件,删除原始项目目录并从zip文件导回项目来解决了这个问题(NetBeans)。
试着做
javac Hello.java
然后,如果它没有编译器错误(它不应该这样做,因为我看不到你的程序中的任何错误),然后键入
java Hello
如果你想'编译和执行'你用任何IDE创建的任何java文件(比如eclipse),只需运行以下命令:
编译:
javac Users\dhiraj01\workspace\Practice\src\PracticeLogic\Logics.java
执行:
java -classpath Users\dhiraj01\workspace\Practice\src\ PracticeLogic.Logics
我花了四个小时尝试各种排列和搜索建议。
最后,发现这篇文章有效,但不是改变原始代码来测试它的最佳解决方案。
set classpath=JDKbin;JDKlib;JREbin;JRElib;myClassLib;.
java <packageName>.<className>
也尝试了java ..\<packageName>.<className>
都没有奏效。
然而,只有第一反应才有效非常感谢Abhi!
“我找到了另一个常见的原因。如果你使用像eclipse这样的IDE在包内创建java文件,你会在你的java文件的顶部找到包名称,如”package pkgName“。如果你试图从命令运行这个文件提示,您将收到NoClassDefFoundError错误。从java文件中删除包名称并使用命令提示符中的命令。为此浪费了3个小时。 - Abhi“
好奇,如果有任何其他方法使其工作而不必更改原始代码?谢谢!
Exception in thread "main" java.lang.NoClassDefFoundError
java试图找到你的.class
文件的地方之一是你当前的目录。因此,如果您的.class
文件位于C:\java
中,则应将当前目录更改为该目录。
要更改目录,请在提示符处键入以下命令,然后按Enter键:
cd c:\java
这个.
告诉java你的classpath是你的本地目录。
Executing your program using this command should correct the problem:
java -classpath . HelloWorld
如果您的Program.java位于“src / mypkg / subpkg /”目录中:
去“src”目录
然后编译使用“javac mypkg / subpkg / Program.java”
要运行使用“java mypkg.subpkg.Program.class”
我终于发现这是Apache Netbeans编辑器的一个错误:
以下步骤将删除错误:
希望有帮助,如果你使用新的Apache Netbeans(不是旧的Netbeans)
如果您的包是helloworld
,您将转到您的包的父目录然后运行:
java helloworld.HelloWorld
像这样运行:
java -jar HelloWorld.jar
这是可以从Windows命令提示符运行的Java命令的长形式:
"C:\Program Files\Java\jdk1.6.0_18\bin\javac.exe" -classpath "C:\Users\Scott\workspace\myproject" com\mycompany\myapp\HelloWorld.java
"C:\Program Files\Java\jdk1.6.0_18\bin\java.exe" -classpath "C:\Users\Scott\workspace\myproject" com.mycompany.myapp.HelloWorld
请注意,类路径最后没有斜杠。 javac.exe命令期望文件以“.java”结尾。 java.exe命令需要完整的类名,并且不以“.class”结尾。
有几种方法可以简化这些命令:
如果你进行了这些更改,你就可以运行这样的东西(你可能可以省略-classpath“。”):
cd "C:\Users\Scott\workspace\myproject\"
javac -classpath "." HelloWorld.java
java -classpath "." HelloWorld
这是最终奏效的。
`@echo off
set path=%path%;C:\Program Files\Java\jdk1.7.0_71\bin;
set classpath=C:\Program Files\Java\jdk1.7.0_71\lib;
cd <packageDirectoryName>
javac .\trainingPackage\HelloWorld.java
cd ..
java trainingPackage.HelloWorld
REM (Make sure you are on the parent directory of the PackageName and not inside the Packagedirectory when executing java).`
NoClassDefFounError本身的javadoc将是一个良好的开端(here),然后我建议你清理并重建你的项目。
CLASSPATH
变量需要包含Java程序.class文件所在的目录。你可以包括'。'在CLASSPATH
中表示应包含当前目录。
set CLASSPATH=%CLASSPATH%;.
您的CLASSPATH
也需要知道您的HelloWorld
课程的位置。
简单来说,如果从DOS提示符运行.
和CLASSPATH
命令,则应在javac
中附加点java
(表示当前目录)。