当前位置:首页 » 编程软件 » idea编译后找不到引用类

idea编译后找不到引用类

发布时间: 2023-01-09 20:14:21

① intellij IDEA为什么我代码编译的时候没有问题 但是maven打包的时候报错找不到类代码中都import过了啊

两者配置的CLASSPATH(Maven的依赖),相同吗

② IDEA Gradle 找不到或无法加载主类 a.AB Exception in thread "main" java.lang.NoClassDefFoundError

java java.lang.NoClassDefFoundError 的解决办法

(2008-12-23 01:14:03)转载▼

标签:

java

noclass

deffound

解决办法

以简单而经典的 “HelloWorld.java” 为例

不含包层次的HelloWorld.java

public class HelloWorld

{

public static void main(String[] args)

{

System.out.println("Hello World!");

}

}

保存在E:javasrc下,命令行下,改变当前路径到:E:javasrc,使用javac命令编译:

E:javasrc>javac HelloWorld.java

运行:

E:javasrc>java HelloWorld

屏幕打印出:

Hello World!

初学者常犯的错误

1. 运行时,带了.class后缀

如果你试图使用如下命令:

E:javasrc>java HelloWorld.class

系统会误认为你运行的是HelloWorld包下的名为class的类文件,会到系统的CLASSPATH下(一般都包括当前目录)企图寻找 HelloWorld.class.class这样的类,这样的类当然不存在了;并且也不可能存在,因为class是关键字,不能作为一个类的名字。所以 会报如下错误信息:

Exception in thread "main" java.lang.NoClassDefFoundError: HelloWorld/class

2. 文件名大小写错误

对于像Windows这样的系统,编译时可以不关心大小写。比如编译HelloWorld.java时,也可以使用:

E:javasrc>javac helloworld.java

也可以编译通过,但产生的类文件仍然是和源文件相符的:HelloWorld.class。

但在运行时一定要注意大小写,比如试图使用如下命令运行:

E:javasrc>java helloworld

将报类似于1中的错误:

Exception in thread "main" java.lang.NoClassDefFoundError: helloworld (wrong name: HelloWorld)

包含包层次的HelloWorld.java

比如上面的HelloWorld.java修改如下:

package org.javaresearch;

public class HelloWorld

{

public static void main(String[] args)

{

System.out.println("Hello World!");

}

}



编译时有两种方法

1. 直接编译

E:javasrc>javac HelloWorld.java

此时在当前目录下输出HelloWorld.class。此时,运行不能使用上面相同的方法,使用:

E:javasrc>java HelloWorld

运行时,出现如下错误:

Exception in thread "main" java.lang.NoClassDefFoundError: HelloWorld (wrong name: org/javaresearch/HelloWorld)

从上述错误信息你也可以看到,系统可以找到HelloWorld类(因为当前路径包含在CLASSPATH中,具体为什么会提示wrong name,有兴趣的朋友参见Java语言规范),但这个类属于org.javaresearch包。所以,你要做的就是按照上述包层次,相应的创建目录层 次,把上面生成的HelloWorld.class放到E:javasrcorgjavaresearch目录下。运行(这时候是在包层次的最高层目录下运行的):

E:javasrc >java org.javaresearch.HelloWorld

系统打印出:

Hello World!

这儿要注意的是,不能使用java orgjavaresearchHelloWorld来运行,此时同样会出现如下错误:

Exception in thread "main" java.lang. (wrong name: org/javaresearch/HelloWorld)

因为类名的书写是用句点来分割包名的层次的,引用java类库里面的类也可以这样写:java.util.List 类的全名就是这样的,我们如果在 import 语句里写上 import java.util.List;

那么,就不用写全名了,直接写 List list = new ...;java 编译器就可以知道是 List 什么类.但是,由于,java.util 这个包 和 java.sql 这个包都有一个 Date 类,所以,如果 同时导入这两个包,那么会

导致java 编译器不知道引用那个类,有两种解决办法:

a. 用全名来引用类:java.util.Date date1 = ...;java.sql.Date date2 = ...;

b. 不要导入整个包,只导入所需要的类,如果你同时需要这两个 Date 类,那么只能写全名了,如果

你不是同时需要这两个类,你可以只导入需要的包:

比如:import java.util.List; import java.sql.Date;这样就不会冲突,因为编译器可以十分清楚的区分

这个 Date 类是 java.sql 包中的, java.util 包中的 Date 类根本就没有导入进来。

这一点,可以按照常理来理解,还是比较好理解的。

2. 使用 -d <directory>编译选项

是不是觉得上面的编译方法有点麻烦,能不能自动在当前路径(或任意指定的路径)下生成包层次呢?有!使用-d <directory>编译选项就能做到。

E:javasrc >javac

(其中的点表示当前目录。d 和 . 之间有空格, .和后面的java文件名之间也有空格)

此时,在当前目录下就生成了一个orgjavaresearch目录,并且输出的.class文件也在里面。运行:

E:javasrc >java org.javaresearch.HelloWorld

系统打印:Hello World!

如果你想把生成的类文件集中存放在一个目录中,比如:E:javaclasses下,那么你首先创建这个目录,然后编译时:

E:javasrc >javac -d E:javaclasses HelloWorld.java

就可以把生成的类文件放到E:javaclasses目录下,并且按照包层次相应的创建目录路径。你可以在E:javaclassesorg javaresearch下找到HelloWorld.class文件。此时使用如下命令可以正确运行(注意如果要用到其它类,请在CLASSPATH中 设好):

E:javaclasses >java org.javaresearch.HelloWorld

③ idea打包jar,运行错误: 找不到或无法加载主类

一、场景
应个人需要,端午空闲时用java开发一个脚本,在打包时报了如下错误:

经过各种找资料,以及和之前打包且运行成功的jar做对比发现了不同所在

二、原因分析
具体原因还不是很清楚,待后续补充

三、问题解决

和可运行jar对比发现,META-INF下面多出这几个文件,只需要删除即可,原因待补充

④ idea找不到java.lang.object的类文件

检查是否安装。在idea中找不到文件,建议检查一下是否安装下载改文件,如果没有,需要重新安装,才能找到该文件。

⑤ 两个java源文件同属一个包,其中一个类引用了另一个,在用javac编译时,报错找不到引用的类,import无作用

确保import的类在classpath中,或者在本次编译.java文件范围内

⑥ 关于在IDEA中使用maven的运行test目录下的main方法无法找到类的

  • pom.xml 报错先调试好

  • 测试类需要继承TestCase

  • 编译后 arget est-classes下面要有class和测试需要的资源文件,就需要在pom.xml中加

    <build><testResources><testResource><directory> src/main/resources</directory><filtering>true</filtering></testResource></testResources></build>

⑦ IDEA找不到或无法加载主类Application

1、删除编译文件,重新运行run

2、file-->invalidate Cache/restart,在弹出框点击invalidate and restart,IDEA重启

3、file-->project structure-->Mole 直接删了,重新添加项目

⑧ idea找不到或无法加载主类,看图,百度的方法没有解决,求大神。

借助idea找主类,需要嵌入jdk。
测试jdk找不到或无法加载主类。

嵌入需要安装以后,正确配置环境变量。

⑨ idea加入依赖包后不提示引入类是什么原因

在maven那个弹出界面左上角刷新一下,貌似不手动刷新你改了配置也不会自动更新。等他重新引入完,看看你的pom.xml里的dependency是不是红的,如果是红的就是没找到你指定的资源

⑩ IntelliJ IDEA 找不到或无法加载主类 com.company.Main到底怎么弄

如果是直接通过dos命令的话,就需要先编译在运行。
如果是在开发工具里面的话,完全没问题。建议你用eclipse运行一下。
就代码本身而言是没有问题的,看是否是其他的问题。

热点内容
java返回this 发布:2025-10-20 08:28:16 浏览:593
制作脚本网站 发布:2025-10-20 08:17:34 浏览:888
python中的init方法 发布:2025-10-20 08:17:33 浏览:582
图案密码什么意思 发布:2025-10-20 08:16:56 浏览:765
怎么清理微信视频缓存 发布:2025-10-20 08:12:37 浏览:684
c语言编译器怎么看执行过程 发布:2025-10-20 08:00:32 浏览:1013
邮箱如何填写发信服务器 发布:2025-10-20 07:45:27 浏览:255
shell脚本入门案例 发布:2025-10-20 07:44:45 浏览:114
怎么上传照片浏览上传 发布:2025-10-20 07:44:03 浏览:806
python股票数据获取 发布:2025-10-20 07:39:44 浏览:713