站内搜索: 请输入搜索关键词

当前页面: 开发资料首页J2SE 专题一个简单的java程序,找不到main()函数 ,请大家帮我找找原因?

一个简单的java程序,找不到main()函数 ,请大家帮我找找原因?

摘要: 一个简单的java程序,找不到main()函数 ,请大家帮我找找原因?


class Person
{
int age;

void shout()
{
int age = 60;
System.out.println("My age is " + age);
}

public static void main(String args[])
{
Person p1 = new Person();
Person p2 = new Person();
p1.age = 30;
//p2.age = 90;
p1.shout();
p2.shout();
}
}


把你的错误信息帖出来,应该不是找不到main函数,而是找不到类。
你用 java -classpath . Person 试试


Exception in thread "main" java.lang.NoSuchMethodError: main


用这个 java -classpath . Person 可以啦
这是为什么呢?


我这里试了,没有问题。
你编译通过了的吧?
编译通过了用java -classpath . Person运行试试,是什么结果。
下次帖错误信息最好贴完整一点,这样容易找到出错的地方。


应该是没找到类,不是没找到方法。
要不就是找错了类,找到另一个地方编译好的Person类了,这个类没有main


你把你的java文件的名称取为 Person.java 就可以了


你把你的java文件的名称取为 Person.java 就可以了


你把你的java文件的名称取为 Person.java 就可以了


编译没有问题,运行这个类为什么找到其他地方Person类去了? 我是在这个路径执行java的啊


源程序的文件名我用的是Lesson3.java 这样也可以啊 , 是classpath 的问题 ,偶不太明白


编译确实是没有问题。但是确执行不了。


D:/javawork/lesson3>set classpath
classpath=D:/java;.;D:/tomcat/common/lib/servlet-api.jar

难道上面的classpath路径是有顺序的? 先找到d:/java路径 , 然后才是本地路径(“.”) ?


你自己试试看,hehe


java.lang.nodefClassFond.

main 函数运行的时候,应该默认的去找你 java 文件名称对应的class去了 如果你定义的
java程序的名称 和你的 class 不同的话,就出这个错了。


我试了好像是有顺序 , 应该把"."放在classpath的最前面 , 这样先找的是当前路径的类 , 就不会找到其他路径的同名的类 。 呵呵 !


现在好了啊?


classpath=D:/java;.;D:/tomcat/common/lib/servlet-api.jar

classpath=.;D:/java;D:/tomcat/common/lib/servlet-api.jar




这种问题总是很多人回答
大家都想在这种小问题上捞分~~~~~


这种问题总是很多人回答
大家都想在这种小问题上捞分~~~~~

过分了。


class Person {
int age;

void shout() {
int age = 60;
System.out.println("My age is " + age);
}
}

public class LianXi21 {
public static void main(String args[]) {
Person p1 = new Person();
Person p2 = new Person();
p1.age = 30;
// p2.age = 90;
p1.shout();
p2.shout();
}
}
这么做行吗?


是不是把源文件的名跟类名写成不同了~


晕s


*_*


高手就是高手


配置不对吧?


我是说环境变量的配置


我把这段代码编译了一遍,遇到如下提示,敢问各位大虾这是怎么回事?

F:/Study/exercise>java Person
Exception in thread "main" java.lang.UnsupportedClassVersionError:
Person (Unsupported major.minor version 49.0)
at java.lang.ClassLoader.defineClass0(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$100(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)


你的代码中就有问题了,应该将这个类定义为public class Person
不然这个类是private的怎么访问


程序本身没问题 估计是你的文件名和类名不一致


public class


不写public并不等于就是private
不写public的意思是包外无法访问,同一包内可以访问


这么简单的问题怎么会要这么麻烦的回答呢 反正不是程序的问题 程序没有错


JAVA环境没配置好


程序没问题 编译OK


程序没有错误。javac编译程序不区分大小写。java运行程序是区分大小写的。


我不是很懂 JAVA, 但是age这个变量声明不重复吗?


程序没错

我用的是Demo100.java 作为保存文件

结果是两个60


main函数所在类要是public 类型的


人家回答你问题了,你也解决了,怎么就不给分


我把这段代码编译了一遍,遇到如下提示,敢问各位大虾这是怎么回事?

F:/Study/exercise>java Person
Exception in thread "main" java.lang.UnsupportedClassVersionError:
Person (Unsupported major.minor version 49.0)
at java.lang.ClassLoader.defineClass0(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$100(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)

--------------------------------------------------------------------------

嘿嘿,这个就是说要jdk1.5,


感觉LZ的代码有问题,既然在Class里面包含了public static void main...的方法
那么这个class应该就命名成public class,LZ可以试一下


LZ可以将代码改成:
public class Person {
int age;

void shout() {
int age = 60;
System.out.println("My age is " + age);
}

public static void main(String args[]) {
Person p1 = new Person();
Person p2 = new Person();
p1.age = 30;
//p2.age = 90;
p1.shout();
p2.shout();
}
}
试一下?


main函数所在类要是public 类型的?
没听说过啊!!!!


你应该也是初学吧?
把文件名和类名改一致就OK


改成Person.java


代码没有问题


哈哈 我也是初学者  你把文件名写为Person.java


把文件名和类名改一致就可以了


我试了一下这个程序,改成如下试一下,运行结果就是30和90了,按楼主的两个都是60
class Person {
int age;
Person(){}
void shout() {
System.out.println("My age is " + age);
}
public static void main(String args[]) {
Person p1 = new Person();
Person p2 = new Person();
p1.age = 30;
p2.age = 90;
p1.shout();
p2.shout();
}
}


这么多人回复啊 !!!
我想问一下怎么给分啊 ? 我不会啊


classpath 加上 .;


带码我运行没问题
楼主给分啊~


我晕~~~~


-_-!


结贴是个好习惯,但不是所有的人都是为了分.
做人要低调!


程序可以运行,没有问题.可能是文件名和类名不一致的原因.


没人告诉lz怎么给分啊,我说,点击管理,然后进去分配分(多给俺点),然后输入密码就可以了。哈哈哈,JF


把Person.java中的class Person前加上public。只有在声明成public的类才可以有main函数,OK!!快给分


刚才说错了,我使用的是jdk1.5。看如下的类

// 这两个类在同一个文件中Person.java

class P
{

}
class Person1
{
int age;

void shout()
{
int age = 60;
System.out.println("My age is " + age);
}

public static void main(String args[])
{
Person1 p1 = new Person1();
Person1 p2 = new Person1();
p1.age = 30;
//p2.age = 90;
p1.shout();
p2.shout();
}
}

编译javac Person.java // 生成两个文件:Person1.class和P.class
运行java Person1
java P

使用时要设上classpath = . 可以使用windows的设置变量设classpath。




大哥,你的age干嘛要定义两次?
int age;

void shout()
{
int age = 60;
System.out.println("My age is " + age);
}


真搞不懂,为什么越简单的问题人气越高,而深一点的问题基本没有人问津


class Person
{
int age;

void shout()
{
int age = 60;
System.out.println("My age is " + age);
}

public static void main(String args[])
{
Person p1 = new Person();
Person p2 = new Person();
p1.age = 30;
//p2.age = 90;
p1.shout();
p2.shout();
}
}
没问题呀,返回值为:
My age is 60
My age is 60



没有问题的呀,文件名跟类名不同也可以运行的。


错了,打错了,要相同的,main所在类的名称要与文件名相同


楼上大错特错,回答之前先试验才好。


↑返回目录
前一篇: NullPointerException问题
后一篇: classpath=D:/java