当前位置:首页 » 寻物指南 » idea为什么找不到主要类别

idea为什么找不到主要类别

发布时间: 2022-07-03 21:18:28

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

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

❷ 为什么用idea写scala程序总显示找不到主类

这个问题我解决了,在设置SparkConf()的时候,需要把本机生成的JAR包路径进行制定,如:valconf=newSparkConf().setAppName("SogouResult").setMaster("spark://master:7077").setJars(List("D:\\IDEAworkspace\\helloSpark\\out\\artifacts\\helloSpark_jar\\helloSpark.jar"))

❸ idea里写上包名就会提示无法加载主类,不写就没事是什么原因

找不到主类是因为classpath配置错误。
是环境变量的问题,看看你的path和classpath是否是正确的,最可能的错误是classpath中少了前面少了.;

classpath的配置必须遵循以下规则:

.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar

❹ idea启动tomcat错误,提示找不到或无法加载主类 #

查看一下当前工程的jdk环境是否正常

❺ 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中使用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出现这种情况 junit一直提示找不到class

ass Book {
public String name;
public String author;
private int availNum;

public Book() {
this("", "", 0);
}

public Book(String name, String author, int availNum) {
this.name = name;
this.author = author;
this.availNum = availNum;
}

public int getAvailNum() {
return availNum;
}

public void setAvailNum(int availNum) {
this.availNum = availNum;
}

public boolean subscribe() {
if (availNum > 0) {
availNum--;
return true;
}
return false;
}

public boolean cancelSubscribe() {
availNum++;
return true;
}
}

/** Book类的单元测试类 */
import junit.framework.TestCase;

public class TestBook extends TestCase {

public void testBook() {
Book book = new Book("Thinking in Java", "Bruce Eckel", 3);
assertEquals(true, book.subscribe());// 第一次预借,应该是成功的
assertEquals(2, book.getAvailNum());// 此时的可预借数是2
assertEquals(true, book.cancelSubscribe());// 取消预借,应该是成功的
assertEquals(3, book.getAvailNum());// 此时的可预借数是3
book.setAvailNum(0);// 将可预借数设为0
assertEquals(false, book.subscribe());// 此时预借,应该是不成功的
}

public static void main(String[] args) {
junit.textui.TestRunner.run(Book.class);
}
}
上面的测试类可以不要main函数,直接在集成开发环境里用JUnit执行单元测试。

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

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

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

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

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

❿ java运行显示“找不到或无法加载主类”!

该如何解决呢?解决办法如下:

1.由于是在运行阶段出现的问题,那么可能是环境变量配置不当的问题,即可能是classpath路径配置错误,而导致.class文件无法加载。那么此时你可以检查是否配置好classpath路径,一般来说classpath路径配置如下:

.;%java_home%lib;%java_home%lib ools.jar; (注意前面的 . 以及 ; 缺一不可)

其中.表示当前路径,;表示分隔符。

2.如果你试过了很多次,classpath也配置对了,依旧出现这个错误,注意你使用的测试代码,是否在某一个包名的下面;

比如说如下测试代码:

在文件所在的当前目录下,运行javac TestPlusPlus.java编译成功,生成TestPlusPlus.class文件,这个时

候,你用javaTestPlusPlus想运行程序,总会出现”找不到或无法加载主类“的错误。这个时候要注意,

之所以找不到,是因为TestPlusPlus在HelloWorld包名的下面。

解决办法:

1.去掉 ”packageHelloWorld;“ 重新用javac 编译TestPlusPlus.java,再运行javaTestPlusPlus就可以了。

2.新建一个包名一样的文件夹,在本例中,为建立一个HelloWorld的文件夹,把TestPlusPlus.java文件移到该目录下。

然后在HelloWorld文件夹的平级下,打开DOS命令窗口,运行javacHelloWorld/TestPlusPlus.java编译程序,

运行javaHelloWorld/TestPlusPlus(或者javaHelloWorld.TestPlusPlus也可以),则可以运行含有包名的java程序。

注意:包名不要含有'.'(点),' '(空格)等特殊符号,这样的话命令行无法判断包名与java程序名的分割点在哪里,

从而还是找到或者无法加载主类。

原理说明:

java程序运行class文件,对于有包名的类,java把包名当成文件夹处理."包名+类名"相当于"文件夹目录+类名"来寻找类。

热点内容
为什么找不到单磁极 发布:2024-09-23 02:29:37 浏览:744
为什么眼睛里面老是有白色东西 发布:2024-09-23 02:01:16 浏览:920
为什么几天时间头发全掉光 发布:2024-09-23 01:47:02 浏览:606
红隼妈妈为什么夺走孩子的食物 发布:2024-09-23 01:12:38 浏览:427
苹果削皮后为什么是透明的 发布:2024-09-23 01:11:15 浏览:665
为什么淘宝评论会被关闭 发布:2024-09-23 00:54:58 浏览:95
为什么交易猫的东西那么便宜 发布:2024-09-23 00:30:11 浏览:709
为什么我的苹果手表微信不可连接 发布:2024-09-23 00:17:28 浏览:73
v73油表和水温不好用为什么 发布:2024-09-23 00:15:02 浏览:12
初一早上烧干锅为什么不好 发布:2024-09-23 00:15:02 浏览:823