`
加菲学Java
  • 浏览: 132992 次
  • 性别: Icon_minigender_1
  • 来自: 扬州
社区版块
存档分类
最新评论

Exception in thread "main" java.lang.NoClassDefFoundError

 
阅读更多
java命令用法出现
Exception in thread "main" java.lang.NoClassDefFoundError:demo/Hello
Caused by: java.lang.ClassNotFoundException:demo.Hello
或者
Exception in thread "main" java.lang.NoClassDefFoundError: Hellmo/Hello)
的问题。
网上搜了一下,貌似都写的差不多
自己试验了一下
解决方案:
1. 检查classpath的配置:JDK1.5以上版本可以不配置,如果要配置的话最前面一定要加上.;
2. 要看你的Java文件是否带有包名:
在src目录下有一个Hello.java(不带包名),javac Hello.java后会在src目录下生成
Hello.class文件,
src
    | Hello.java
    | Hello.class
此时执行java Hello是没有任何问题的
现在在src下新建一个目录demo01,同时建立Hello.java(带包名),
Hello.java:
package demo01;
...
此时编译:
1) javac Hello.java
生成的目录如下:
src
    | demo
            | Hello.java
            | Hello.class
如果此时的目录是demo,运行java Hello或者java demo01.Hello都会报上述的错误
此时先回到上层目录:src下,再运行java demo01.Hello就会没有任何问题
 
1) 在demo目录下运行javac -d . Hello.java
生成的目录如下:
src
    | demo
    | Hello.java
        | demo
             | Hello.class
这样的话不管怎么运行都是会报错的
纠正一下上面的话.如果现在就在src\demo目录下的话,运行java demo.Hello是没有问题的
3. 另一个问题:
在src建立Hello.java(带包名)
Hello.java:
package demo01;
...
编译javac Hello.java, 会在src目录下生成Hello.class
src
    | Hello.java
   | Hello.class
运行java demo01.Hello 会报错
此时应该这么编译才行:
javac -d . Hello.java
src
    | Hello.java
        | demo01
       | Hello.class
 
对于javac命令的总结:
javac 类名.java(如果有包) 会直接生成 类名.class文件
javac -d . 类名.java(如果有包) 会生成相应的 文件夹(也就是所谓的包)和相应的类名.class文件
 
4. 把src和classes文件分开,这样看的会比较清楚
比如在hellapp目录下建立src和classes文件夹
在src文件间下建立目录demo,在demo目录下建立Hello.java.
此时进入到helloapp目录下,运行命令:
javac -d classes src\demo\*.java
(注:如果你用的编辑器是sublime text,并且你的代码里有中文,为了避免警告和错误,请使用如下命令,指定编码:
javac -encoding utf-8 -d classes src\demo\*.java)
helloapp
     | src
               | demo
                               | Hello.java
       | classes 
                  | demo
                               | Hello.class
要运行Hello程序,需要先进入到classes目录下,然后运行java demo.Hello
或者可以在任意目录下:java -cp ...\helloapp\classes demo.Hello
 
5. 某些时候要依赖一些jar文件,比如做Hibernate应用的时候,在编译程序的时候需要指定classpath,运行的时候也要指定classpath,并且这些依赖的jar文件需要一一指定,没法用*.jar的形式.囧。。。这时候用Ant当然会方便简单许多了.
 尼玛,重新编辑之后格式都乱了叫喊
分享到:
评论

相关推荐

    Exception in thread main java.lang.NoClassDefFoundError错误解决方法

    `Exception in thread "main" java.lang.NoClassDefFoundError` 是Java编程中常见的一个运行时异常,通常发生在尝试运行一个Java程序时,如果JVM找不到在类路径(ClassPath)中定义的主要类(主类,即包含`public ...

    java.lang.NoClassDefFoundError

    Exception in thread "main" java.lang.NoClassDefFoundError: javax/mail/Message at com.bulktree.mail.SimpleMailTest.mail(SimpleMailTest.java:30) at com.bulktree.mail.SimpleMailTest.main(SimpleMailTest...

    java.lang.NoClassDefFoundError错误解决办法

    "java.lang.NoClassDefFoundError错误解决办法" java.lang.NoClassDefFoundError错误是一种常见的Java错误,它发生在Java虚拟机在编译时能找到合适的类,而在运行时不能找到合适的类导致的错误。下面是该错误的解决...

    Exception in thread "main" java.lang.NoClassDefFoundError: org/json/JSONObject,是因为缺少java-json.jar-附件资源

    Exception in thread "main" java.lang.NoClassDefFoundError: org/json/JSONObject,是因为缺少java-json.jar-附件资源

    Exception in thread “main” java.lang.NoClassDefFoundError: org/apache/spark/SparkConf

    敲黑板 ,引入的依赖 一定要 “compile” 或则 “runtime”,否则spark conf 无法初始化,这辈子也运行不了,千万不要是 “provided”. org.apache.spark spark-sql_2.11 ${spark.jar.version} ...

    flink on yarn 缺少依赖NoClassDefFoundError: com/sun/jersey

    flink-hadoop-compatibility_2.12-1.7.1.jar javax.ws.rs-api-2.0.1.jar jersey-common-2.27.jar ...Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/jersey/api/client/config/ClientConfig

    独立版commons-lang-2.6-exception,解决缺少NestableRuntimeException

    Exception in thread "main" Java.lang.NoClassDefFoundError: org/apache/commons/lang/exception/NestableRuntimeException 或者: Caused by: java.lang.ClassNotFoundException: org.apache.commons.lang....

    avro-1.8.1

    运行Sqoop报错:Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/avro/LogicalType,下载此资源放到Sqoop的lib目录下即可

    flink依赖jar包——解决NoClassDefFoundError: com/sun/jersey

    Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/jersey/api/client/config/ClientConfig at org.apache.hadoop.yarn.client.api.TimelineClient.createTimelineClient(TimelineClient.java:...

    jface开发的几个包都在里面了

    Exception in thread "main" java.lang.NoClassDefFoundError: org/eclipse/core/runtime/IProgressMonitor at java.lang.Class.getDeclaredMethods0(Native Method) at java.lang.Class....

    myeclipse开发过程中异常处理

    如果你用myEclipse进行开发的话,运行时可能会出现以下的错误 Exception in thread main java.lang.NoClassDefFoundError commailutilLineInputStream,解决办法详见文档

    slf4j-1.7.rar

    1.如果运行程序出现错误:“Exception in thread "main" java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory”,这是因为项目缺少slf4j-api.jar和slf4j-log4j12.jar这两个jar包导致的错误。 2.如果运行程序...

    redhat 安装oracle 11g

    ### Red Hat Enterprise Linux 6 (RHEL6) 安装 Oracle 11g R2 的详细步骤 #### 一、概述 在Red Hat Enterprise Linux 6 (RHEL6) 上安装 Oracle 11g R2 数据库是一项重要的系统管理任务。此过程涉及到系统的配置调整...

    com/ibm/icu/text/UnicodeDecompressor异常解决方法

    NULL 博文链接:https://coolzhi.iteye.com/blog/665516

    LINUX 安装ORACLE笔记

    ### LINUX安装ORACLE知识点详述 #### 一、系统准备:检查所需RPM包完整性 在Linux环境下,尤其是Red Hat Enterprise Linux (RHEL) 4.0版本中,安装Oracle数据库之前,需确保一系列关键RPM包的存在与完整性。...

    短信猫西门子TC35测试

    1、如果报了如下错误: Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/log4j/Logger 那是因为没有把log4j-1.2.13.jar倒入到工程中。 2、如果报了如下错误: org.smslib.GatewayException:...

    okhttp3.2与okio1.6.zip

    Exception in thread "main" java.lang.NoClassDefFoundError: kotlin/jvm/internal/Intrinsics at okio.Okio.source(Okio.kt) at okhttp3.internal.io.RealConnection.connectSocket(RealConnection.java:144) ...

    tomcat启动报错:java.util.zip.ZipException的解决方法

    发现问题 早上起来报错误,Jenkins打包到tomcat服务器,死活启动不起来... java.util.zip.ZipException: error in opening zip file at java.util.zip.ZipFile.open(Native Method) at java.util.zip.ZipFile.(ZipFi

Global site tag (gtag.js) - Google Analytics