⑴ java 编译成功,运行class文件出现“找不到或无法加载主类”,什么原因
程序本身没错。原因可能有:
1、环境变量配置问题
解决办法:测试配置,在cmd下输入 java -version,如果有以下相似的输出,说明配置没问题
C:\Documents and Settings\Administrator>java -version
java version "1.6.0_21"
Java(TM) SE Runtime Environment (build 1.6.0_21-b06)
Java HotSpot(TM) Client VM (build 17.0-b16, mixed mode, sharing)
2、编译错误。
你文件名要和类名相同。保存为Hello.java ,编译:javac Hello.java。
运行时不要加后缀 直接 java Hello
⑵ 编译java程序时老是显示找不到主类是怎么回事
你贴出的程序有些问题,
new Employee[3],后少分号。
GregortanCalendar calendar,类写错了。
hirDay=calendar.getTime();,hirDay写错了。
修改后的程序是这样。可以运行。
我很纳闷你之间的程序能编译通过?
import java.util.Date;
import java.util.GregorianCalendar;
public class EmployeeTest
{
public static void main(String[] args)
{
Employee[] staff =new Employee[3];
staff[0]=new Employee("Carl cracker ",75000,1987,12,15);
staff[1]=new Employee("Harry cracker ",50000,1989,10,1);
staff[2]=new Employee("TONY cracker ",40000,1990,3,15);
for (Employee e:staff)
e.raiseSalary(5);
for (Employee e:staff)
System.out.println("name"+e.getName()+",salary="+e.getSalary()+",hireDay="+e.getHireDay());
}
}
class Employee
{
public Employee(String n,double s,int year,int month,int day)
{
name=n;
salary=s;
GregorianCalendar calendar=new GregorianCalendar(year,month-1,day);
hireDay=calendar.getTime();
}
public String getName()
{return name;
}
public double getSalary()
{
return salary;
}
public Date getHireDay()
{
return hireDay;
}
public void raiseSalary(double byPrecent)
{
double raise=salary*byPrecent/100;
salary+=raise;
}
private String name;
private double salary;
private Date hireDay;}
⑶ 我java 编译成功, 运行程序的时候却出现 找不到或无法加载主类的错误。
classpath是网上看的配置的
⑷ 类中找不到main方法
说明当前类中没有运行入口(main方法)。
解释:java运行中规定main方法作为java项目的入口之一,也就是说如果运行的是java类,但是类中没有main方法,此时就会报此错错误。
解决办法:在类中创建main方法,或者是去有main方法的类中执行。
⑸ 错误: 找不到或无法加载主类 ArrayListMagnet
解决 :提示错误“找不到或者无法加载主类” 的一个方法
1、可能是你的项目的Java Build Path中的Libraries中有个jar包的Source attachment指为了一个不可用的jar包。
2、jdk1.8不需要配置环境变量classpath
3、以下原理理解了你就可以自行解决上述错误。
(1)cmd运行java文件,请把文件里的第一行"package A;"注释掉;
假设:Hello.java位于C:/work/ppp/A下
在工作目录"C:/work/ppp/A" 下输入:
javac Hello.java
java Hello
则 编译运行成功。
(2)若在java文件中加上了package A;则在工作目录"C:/work/ppp/A"下输入:
javac Hello.java
java -cp .;(此处为文件路径) A.Hello
解释:-cp 为一个选项,也可写为-classpath
.表示当前目录"C:/work/ppp/A"
;表示分隔符
(此处为文件路径) 在本例中为"C:/work/ppp"
A.Hello:因为java文件里第一行有"package A",所以此处必须为A.Hello
显然,在当前目录"C:/work/ppp/A"中找不到A.Hello,在"C:/work/ppp"中找到了A.Hello,所以上述两行将编译执行成功。
⑹ java编译通过,为什么运行却提示找不到或无法加载主类
java编译通过说明你的程序没有语法错误(也就是javac的过程 javac java文件)
运行时java虚拟机运行程序(也就是java class文件)
找不到主类,说明你的java文件中没有实现如下的方法
/**
*该方法是程序启动的入口,没有该方法,java虚拟机找不到程序的入口,没办法启动程序
*/
public static void main(String[] args){
//这里是你的具体逻辑操作
}
⑺ java编译通过,为什么运行却提示找不到或无法加载主类
入门就遇到这样的问题,环境变量按网上说的配好了,直接java 和 javac都有提示出来,说明没问题了,
做了一个简单java,放在e盘根目录下,在c:下操作javac该java文件成功了,但用java 该class时却提示“找不到或无法加载主类” ,忙活了半天,找了些资料,发现其实很简单,不是语句错误,是路径问题classpath的问题。
主要是以下两点要注意:
1、在classpath的最前面要加一个本目录路径,用.表示,由于后面还有java的dt和tools两个路径,所以.后要加;进行分隔表示。
2、更为重要的是,在cmd下运行javac 和java的时候,必须在该java文件的目录下运行,这样生成的class也在该目录下,java的时候也会第一个就在本目录下找class文件,就不 会提示找不到了。这个cmd运行路径由于一般不太注意,输入cmd就会直接到c:\个人文件夹下,而一般的java文件会用其它软件编写,放在选定的路径 下,这两个路径很少能主动重合,一运行当然找不到了,但是javac能认到,不知为什么java就提示找不到?这点有点奇怪。网上各种解决方法里很少注意 到其实就是这个小问题造成的找不到类,都想当然的以为是在java源文件路径下运行java,那当然就找不到基本问题所在了。
如果1、2都做了还是没变化,那就是该计算机改了环境变量后需要重新启动下让新的设置生效,重启下即可。
⑻ JAVA编译提示缺少主函数
把你的包设置一下,把eclipsel路径设置一下就好了
⑼ 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把包名当成文件夹处理."包名+类名"相当于"文件夹目录+类名"来寻找类。
⑽ 我设置好了java环境变量,编译也通过了,就是运行不了,命令提示符显示 错误:找不到或无法加载主类
最好把你的源码贴出来,我推测有以下两个原因:
1、源代码中没有main方法;
2、源代码中定义了package(包),那么在编译后就需要将class文件放入包名对应的文件夹下,例如我定义的包名是com.demo,源文件W.java在D:/test/下,那么我们在命令行进入test目录后执行javac W.java,执行完会在当前目录下生成W.class文件,此时直接接着执行
java W 肯定会报错,就是加上包名也不行(java com.demo.W),我们需要做的是在当前目录下新建一个com文件夹,然后在com下再新建demo文件夹,接着把W.class文件移到demo文件夹下,现在我们再执行java com.demo.W 就不会报错了。