线程“ main”中的异常java.lang.NoClassDefFoundError:

以下程序抛出错误:

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

你能告诉我根本原因吗?

22个解决方案

66 votes

我发现了另一个常见原因。 如果使用IDE(如eclipse)在包内创建Java文件,则会在Java文件顶部找到包名,如“ package pkgName”。 如果您尝试从命令提示符下运行此文件,则会收到NoClassDefFoundError错误。 从java文件中删除软件包名称,并在命令提示符下使用命令。 为此浪费了3个小时。 -阿比

Abhi answered 2020-06-19T13:09:38Z

27 votes

Exception in thread "main" java.lang.NoClassDefFoundError

Java试图找到您的.文件的地方之一是您当前的目录。 因此,如果您的.class文件位于C:\java中,则应将当前目录更改为该目录。

要更改目录,请在提示符下键入以下命令,然后按Enter:

cd c:\java

此.告诉Java,您的类路径是您的本地目录。

Executing your program using this command should correct the problem:

java -classpath . HelloWorld

sgokhales answered 2020-06-19T13:10:07Z

14 votes

如果您的软件包是helloworld,则应转到软件包的父目录,然后运行:

java helloworld.HelloWorld

hadibou answered 2020-06-19T13:10:27Z

11 votes

像这样运行它:

java -jar HelloWorld.jar

Konstantin Spirin answered 2020-06-19T13:10:48Z

5 votes

请参阅[http://scottizu.wordpress.com/2013/08/28/fixing-the-exception-in-thread-main-java-lang-noclassdeffounderror-in-eclipse/。]

这是可以从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

这些命令可以在任何目录中运行,这意味着您不必位于HelloWorld.java文件所在的目录中。

第一行编译您的HelloWorld.java文件,创建一个HelloWorld.class文件。

第二行运行HelloWorld.class文件。

-classpath告诉java在每个命令中在哪里寻找指定文件

Java编译器(javac.exe)期望java文件相对于类路径的位置(即,该文件位于C:\ Users \ Scott \ workspace \ myproject \ com \ mycompany \ myapp \ HelloWorld.java)

Java(java.exe)需要相对于类路径的包(即com.mycompany.myapp)和类(HelloWorld)(即文件位于C:\ Users \ Scott \ workspace \ myproject \ com \ mycompany \ myapp \ HelloWorld.class)

注意,类路径的末尾没有斜杠。 javac.exe命令期望文件以“ .java”结尾。 java.exe命令需要完整的类名,并且不能以“ .class”结尾。

有几种方法可以简化这些命令:

您不必指定java.exe的完整路径。 将Java添加到Windows路径(运行-> sysdm.cpl->高级选项卡->环境变量->选择路径->编辑->附加“; C:\ Program Files \ Java \ jdk1.6.0_18 \ bin \”) 。 或者,您可以追加JAVA_HOME并创建该环境变量。

您不必输入整个类路径(即,您可以只使用-classpath“。”)。 输入您将要使用的目录:

cd“ C:\ Users \ Scott \ workspace \ myproject \”

您可以使用默认程序包(将HelloWorld.java文件目录放在工作目录中,而不使用Java程序包指令)

如果进行这些更改,则将运行类似的内容(并且您可以省去-classpath“。”):

cd "C:\Users\Scott\workspace\myproject\"

javac -classpath "." HelloWorld.java

java -classpath "." HelloWorld

Scott Izu answered 2020-06-19T13:12:12Z

4 votes

这是最终成功的方法。

`@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

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).`

ravikanth answered 2020-06-19T13:12:31Z

3 votes

NoClassDefFounError本身的javadoc将是一个不错的开始(在这里),然后我建议您清理并重建项目。

talnicolas answered 2020-06-19T13:12:51Z

1 votes

CLASSPATH变量需要包含Java程序.class文件所在的目录。 您可以包含“。” 在CLASSPATH中指示应包括当前目录。

set CLASSPATH=%CLASSPATH%;.

Amir Afghani answered 2020-06-19T13:13:12Z

1 votes

您的.也需要知道您的CLASSPATH类的位置。

简而言之,如果您正在运行DOS提示符下的javac和java命令,则应在CLASSPATH中附加点.(表示当前目录)。

anubhava answered 2020-06-19T13:13:37Z

1 votes

我遇到了同样的问题,偶然发现了“ Build Main Project F11”的解决方案。ide提出了一个“选项”,我可能要取消选中“保存时编译”在“项目”配置对话框的“构建”>“编译”部分中。取消选中“ Compille on Save”,然后(对我来说)执行常规的“ Clean and Build”,对我来说就成功了。

user2676860 answered 2020-06-19T13:13:58Z

1 votes

在文件夹内的cmd提示符下键入以下内容:

set classpath=%classpath%;.;

Bruevin answered 2020-06-19T13:14:18Z

1 votes

在上述解决方案中尝试过相同的问题,但没有任何效果。我只需要检查一下我的Java代码,发现主函数无法识别,因为它和(String)之间没有空格即初始代码:

public static void main(String[]args){

工作代码。

public static void main (String[]args){

希望我能帮助别人。

domii answered 2020-06-19T13:14:47Z

1 votes

Java文件:

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

Udit Nagi answered 2020-06-19T13:15:11Z

0 votes

我遇到此错误是因为我的文件位于包装中。所以我的foo包我必须这样调用:

java foo.HelloWorld

kravits88 answered 2020-06-19T13:15:36Z

0 votes

这里的问题是设置环境和类文件的运行。一个。 要设置环境路径,请运行以下命令:设置路径= C:\ Program Files(x86)\ Java \ jdk1.7.0 \ binb。 从com.test.TestJavaClass之类的包中运行程序

命令:java com.test.TestJavaClass

这里的一般问题是我们从src / package / name之类的包内部运行它。我们不应该包含src,包名称就足够了。

Chirag Pahuja answered 2020-06-19T13:16:06Z

0 votes

简便的解决方案:通过将原始项目导出到zip文件,删除原始项目目录并从zip文件导入回项目,我解决了这个问题(NetBeans)。

Pavel Vavruska answered 2020-06-19T13:16:26Z

0 votes

尝试做

javac Hello.java

然后,如果它没有编译器错误(因为我看不到您程序中的任何错误,所以不应该这样做),请键入

java Hello

DalekCaan99 answered 2020-06-19T13:16:55Z

0 votes

如果要“编译并执行”使用任何IDE(如eclipse)创建的任何Java文件,只需运行以下命令:

编译: javac Users\dhiraj01\workspace\Practice\src\PracticeLogic\Logics.java

执行:java -classpath Users\dhiraj01\workspace\Practice\src\ PracticeLogic.Logics

Dhiraj Aggarwal answered 2020-06-19T13:17:24Z

0 votes

我花了四个小时尝试各种排列和搜索建议。

最后,发现这篇文章有效,但不是更改原始代码进行测试的最佳解决方案。

尝试更改CLASSPATH,以包含类库java .

将当前目录更改为父目录(package文件夹),并且累了java .也尝试了java ..\.

两者都不起作用。

但是,只有第一个响应有效。 非常感谢阿比!!!

“我发现了另一个常见原因。如果您使用eclipse之类的IDE在包中创建Java文件,则会在Java文件顶部找到包名,例如“ package pkgName”。如果尝试从命令运行此文件 提示符下,您将收到NoClassDefFoundError错误。从java文件中删除程序包名称,并在命令提示符下使用命令。为此浪费了3个小时。-Abhi“

好奇是否还有其他方法可以使它工作而不必更改原始代码? 谢谢!

ravikanth answered 2020-06-19T13:18:16Z

0 votes

如果您的Program.java位于“ src / mypkg / subpkg /”目录中:

转到“ src”目录

然后使用“ javac mypkg / subpkg / Program.java”进行编译

要运行,请使用“ java mypkg.subpkg.Program.class”

mar915h answered 2020-06-19T13:18:49Z

0 votes

我终于发现这是Apache Netbeans编辑器的错误:

以下步骤将消除错误:

将文件名和类重命名为Abc

关闭编辑器

重新打开编辑器

将文件名和类从Abc重命名回以前的名称

现在调试项目(Ctrl + F5)可以正常工作

如果您正在使用新的Apache Netbeans(而不是旧的Netbeans),希望对您有所帮助

Manohar Reddy Poreddy answered 2020-06-19T13:19:40Z

0 votes

我有使用maven的问题。 我只是单击Maven项目ant然后命名

project-> plugins -> clean -> and button run.

Peter Petrov answered 2020-06-19T13:20:04Z

线程main java中的异常怎么解决_线程“ main”中的异常java.lang.NoClassDefFoundError:...相关推荐

  1. mysql insert 主键冲突_在MySql中建立存储过程和解决insert into select 中主键冲突的有关问题...

    首先说需求,我想重复插入大量数据,那么首先想到的,就是用insert into select语句. 但是因为mysql中没有将主键设为自增长,导致每次都会报主键冲突的错误,插入失败. 对于这个问题,就 ...

  2. java runtime异常如何解决_成都汇智动力-Java中常见的RunTime异常及异常详解

    java.lang.ArithmeticException算术条件异常.譬如:整数除零等.java.lang.ArrayIndexOutOfBoundsException数组索引越界异常.当对数组的索 ...

  3. java 异常补偿解决_第三方接口调用异常补偿机制实现实例记录

    背景: 我们的组件(简称A),在业务链中属于数据支撑节点.其中与组件B存在接口同步数据的直接关系(API接口直接调用进行数据交互) 问题: 我们的上游有另一个组件C(带有界面),调用A(us)进行数据 ...

  4. java代码优化的方法和准则_编写高质量代码:改善Java程序的151个建议(第1章:JAVA开发中通用的方法和准则___建议16~20)...

    建议16:易变业务使用脚本语言编写 Java世界一直在遭受着异种语言的入侵,比如PHP,Ruby,Groovy.Javascript等,这些入侵者都有一个共同特征:全是同一类语言-----脚本语言,它 ...

  5. java 异常 抛 效率_一文带你理清Java异常体系,提高开发效率

    一.概述 我们在项目开发的过程中使用异常是必不可少的事情,那么异常会带来哪些好处呢? 我们知道异常带来的最明显的好处是,它能够降低错误处理代码的复杂度.不使用异常的话,我们就必须检查一些特定的错误,并 ...

  6. hashmap是线程安全的吗?怎么解决?_线程安全及三种解决方案

    线程安全:如果有多个线程在同时运行,而这些线程可能会同时运行这段代码.程序每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,就是线程安全的. 线程安全问题都是由全局变量及静 ...

  7. python异常类封装_在Python中封装异常

    如何使应用程序与使用过的库依赖关系所引发的异常脱钩? [app] --uses--> [lib] --dependson--> [dependency] / / x- \ / `----- ...

  8. java内存 phd文件抓取_您可以从IBM PHD Java堆转储中提取字符串的值吗?

    我有一个来自IBM jvm的PHD格式堆转储,我希望检查一些字符串的值.使用Sun JVM的二进制hprof转储,这是可能的,但是我无法从IBM转储中恢复此信息. 我试过了: >具有IBM DT ...

  9. java中appletviewer是什么意思_自动生成供AppletViewer运行Java Applet的HTML文件

    这几天开始自学Java,搭建Eclipse作为开发环境,发现实在太智能了,貌似对学习无益.于是搜了下,另外搭建了EditPlus上的简易Java开发环境,确实比较适合学习,不足之处是没法配置比较方便的 ...

  10. 王者荣耀手机助手服务器异常,如何解决王者荣耀助手登录网络异常

    很多玩家在登陆王者荣耀助手登陆时会出现网络异常,无法登陆的情况,但是排除了网络的原因后还是无法登陆,那么王者荣耀助手登录网络异常到底该怎么解决呢?下面就和斗蟹小编一起来看看吧! 王者荣耀助手网络异常解 ...

最新文章

  1. VS2010打开项目提示未能正确加载解决方案中一个或多个项目
  2. Java反射最佳实践
  3. Android 监听APP进入前台、后台
  4. The C Programming Language--可变参数的函数
  5. jquerymobile页面跳转和参数传递
  6. 2018,广东,深圳马峦山游玩攻略(含登山线路)
  7. python第三方库介绍和安装
  8. 正则表达式及grep
  9. jdbc中mySQL语句单双引号_JDBC: 执行MySQL语句时,bit类型的数值在java代码中应该怎么表示?...
  10. kafka性能优化入门
  11. 仿外卖mysql源码_进云仿美团外卖源码 v1.19
  12. 我只写注释 —— 让Ai写代码
  13. .axf文件_MDK 的编译过程及文件类型全解(一)
  14. 统计相关国际期刊汇总
  15. 支持图灵架构和安培架构的TensorFlow Python库
  16. 【软考备战·希赛网每日一练】2023年4月13日
  17. 【内有福利】5.7K画质高品质防抖:运动全景相机开启新纪元
  18. 设计模式--工厂设计
  19. go+mysql+redis+vue3简单聊室,第1弹:接口路由搭建和传参
  20. 五一假期选择哪款蓝牙耳机比较好?舒适度最好的蓝牙耳机推荐

热门文章

  1. 供应链金融(Supply Chain Finance)
  2. 《烟花》动漫电影 观后感
  3. linux命令— head
  4. 【计算机视觉40例】案例10:隐身术
  5. (十四)ATP应用测试平台——使用docker-compose一键式安装ATP应用测试平台的依赖服务
  6. poco库开发mysql_Poco数据库操作
  7. 关于C语言两个小游戏的提示和源码(猜词游戏与控制移动游戏)
  8. 计算机无法关闭密码保护,Win7密码保护共享关闭不了怎么办?密码保护共享关不掉的解决方法...
  9. VIMS(虚拟镜像管理系统)
  10. FIL最新行情,FIL预测能涨至750U是否过于夸大?会突破新高吗?