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

如何解决线程“主”中的异常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
你能告诉我根本原因吗?     

解决方法

        我发现了另一个常见原因。如果使用eclipse之类的IDE在包中创建Java文件,则会在Java文件顶部找到包名,例如\“ package pkgName \”。如果尝试从命令提示符下运行此文件,则会收到NoClassDefFoundError错误。从java文件中删除软件包名称,并在命令提示符下使用命令。为此浪费了3个小时。 -阿比     ,        
Exception in thread \"main\" java.lang.NoClassDefFoundError  
java试图找到您的
.class
文件的地方之一是您当前的目录。因此,如果
.class
文件位于
C:\\java
中,则应将当前目录更改为该目录。 要更改目录,请在提示符下键入以下命令,然后按Enter:
cd c:\\java  
这个“ 6”告诉Java您的类路径是您的本地目录。
Executing your program using this command should correct the problem:
java -classpath . HelloWorld  
    ,        如果您的软件包是
helloworld
,则转到软件包的父目录,然后运行:
java helloworld.HelloWorld
    ,        像这样运行它:
java -jar HelloWorld.jar
    ,        参见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
    ,        这是最终成功的方法。
`@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将是一个不错的开始(在这里),然后我建议您清理并重建项目。     ,        
CLASSPATH
变量需要包含Java程序.class文件所在的目录。您可以在
CLASSPATH
中包含\'。\',以指示应包含当前目录。
set CLASSPATH=%CLASSPATH%;.
    ,        您的
CLASSPATH
还需要知道
HelloWorld
班级的位置。 简而言之,如果您正在DOS提示符下运行
javac
java
命令,则应在
CLASSPATH
中附加点
.
(表示当前目录)。     ,        我遇到了同样的问题,偶然发现了\'Build Main Project F11 \'的解决方案。 想法提出了一个“选项”,我可能想取消选中“在保存时编译” 在“项目”配置对话框的“构建”>“编译”部分中。 取消选中“ Compille on Save”,然后对我来说,执行常规的“ Clean and Build \”就可以了。     ,        在文件夹内的cmd提示符下键入以下内容:
set classpath=%classpath%;.;
    ,        在上述解决方案上尝试过相同的问题,但没有任何效果。 我只需要检查一下我的Java代码,发现主函数无法识别,因为它和(String)之间没有空格 即初始代码:
public static void main(String[]args){
工作代码。
public static void main (String[]args){
希望我能帮助别人。     ,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
    ,        我遇到此错误是因为我的文件位于包装中。 所以我的foo包我必须这样调用: java foo.HelloWorld     ,        这里的问题是设置环境和类文件的运行。 一种。要设置环境路径,请运行以下命令: 设置路径= 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(例如eclipse)创建的任何Java文件,只需运行以下命令:   编译:   
javac Users\\dhiraj01\\workspace\\Practice\\src\\PracticeLogic\\Logics.java
     执行:
java -classpath Users\\dhiraj01\\workspace\\Practice\\src\\ PracticeLogic.Logics
    ,        我花了四个小时尝试各种排列和搜索建议。 最后,发现这篇文章有效,但不是更改原始代码进行测试的最佳解决方案。 尝试更改CLASSPATH,以包含类库,
set classpath=JDKbin;JDKlib;JREbin;JRElib;myClassLib;.
将当前目录更改为父目录(package文件夹),累了的
java <packageName>.<className>
也尝试了
java ..\\<packageName>.<className>
两者都不起作用。 但是,只有第一个响应有效。非常感谢阿比!!!   \“我发现了另一个常见原因。如果您使用eclipse这样的IDE在包中创建Java文件,则会在Java文件顶部找到包名,例如\” package pkgName \“。如果尝试运行此文件,从命令提示符中删除文件,您将收到NoClassDefFoundError错误。从java文件中删除程序包名称,并在命令提示符中使用命令。为此浪费了3个小时。-Abhi \“ 好奇是否有其他方法可以使它工作而不必更改原始代码?谢谢!     ,        如果您的Program.java位于\“ src / mypkg / subpkg / \”目录中: 转到\“ src \”目录 然后使用\“ javac mypkg / subpkg / Program.java \”进行编译 要运行,请使用\“ java mypkg.subpkg.Program.class \”     ,        我终于发现这是Apache Netbeans编辑器的错误: 以下步骤将消除错误: 将文件名和类重命名为Abc 关闭编辑器 重新打开编辑器 将文件名和类从Abc重命名回以前的名称 现在调试项目(Ctrl + F5)可以正常工作 如果您使用的是新的Apache Netbeans(而不是旧的Netbeans),希望对您有所帮助     ,        我曾经用过Maven的这个问题。我只是单击Maven项目ant然后命名
project-> plugins -> clean -> and button run
。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


依赖报错 idea导入项目后依赖报错,解决方案:https://blog.csdn.net/weixin_42420249/article/details/81191861 依赖版本报错:更换其他版本 无法下载依赖可参考:https://blog.csdn.net/weixin_42628809/a
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下 2021-12-03 13:33:33.927 ERROR 7228 [ main] o.s.b.d.LoggingFailureAnalysisReporter : *************************** APPL
错误1:gradle项目控制台输出为乱码 # 解决方案:https://blog.csdn.net/weixin_43501566/article/details/112482302 # 在gradle-wrapper.properties 添加以下内容 org.gradle.jvmargs=-Df
错误还原:在查询的过程中,传入的workType为0时,该条件不起作用 &lt;select id=&quot;xxx&quot;&gt; SELECT di.id, di.name, di.work_type, di.updated... &lt;where&gt; &lt;if test=&qu
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct redisServer’没有名为‘server_cpulist’的成员 redisSetCpuAffinity(server.server_cpulist); ^ server.c: 在函数‘hasActiveC
解决方案1 1、改项目中.idea/workspace.xml配置文件,增加dynamic.classpath参数 2、搜索PropertiesComponent,添加如下 &lt;property name=&quot;dynamic.classpath&quot; value=&quot;tru
删除根组件app.vue中的默认代码后报错:Module Error (from ./node_modules/eslint-loader/index.js): 解决方案:关闭ESlint代码检测,在项目根目录创建vue.config.js,在文件中添加 module.exports = { lin
查看spark默认的python版本 [root@master day27]# pyspark /home/software/spark-2.3.4-bin-hadoop2.7/conf/spark-env.sh: line 2: /usr/local/hadoop/bin/hadoop: No s
使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams[&#39;font.sans-serif&#39;] = [&#39;SimHei&#39;] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -&gt; systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping(&quot;/hires&quot;) public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate&lt;String
使用vite构建项目报错 C:\Users\ychen\work&gt;npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-