菜鸟疑惑:main主函数能否放在不带标识符的类中。详情请进。

youyouan 2006-01-06 10:08:13

文件名: myclass.java

public class myclass {

.....

}

class myclass_ex {
public static void main (String[] args) {
......
}
}

这样的结构是否合法呢,我是新手,感谢大家指点。
...全文
320 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
benq998 2006-01-10
  • 打赏
  • 举报
回复
肯定不行,程序入口的main方法必须要放到和文件名一个的类名中。
Times2001 2006-01-09
  • 打赏
  • 举报
回复
楼主应该是在命令行下运行的javac和java吧?
javac后会生成两个.class文件,myclass.class和myclass_ex.class
相当于你写两个文件
//myclass.java
public class myclass {
.....
}
//myclass_ex.java
class myclass_ex {
public static void main (String[] args) {
System.out.println("Hello Java");//打印"Hello Java"
}
}
所以你java myclass的时候回报错
youyouan 2006-01-09
  • 打赏
  • 举报
回复
我的ClassPath设置是: .;C:\jdk\lib\dt.jar;C:\jdk\lib\tools.jar;对吗?还需要添加什么吗?
aha1315 2006-01-07
  • 打赏
  • 举报
回复
我认为应该将myclass_ex类改为public
crazycy 2006-01-07
  • 打赏
  • 举报
回复
Exception in thread "main" java.lang.NoSuchMethodError: main
====
由上面的测试用例知,你的问题应该是环境变量的事情,应该增加一个classpath变量 最前面是.;
crazycy 2006-01-07
  • 打赏
  • 举报
回复
这个是我曾经做的一个测试用例,运行没有问题:
class StaticInnerClass {
public StaticInnerClass() {
}

public static void main(String[] args) {
Parcel1 p = new Parcel1();
Contents1 c = p.cont();
c = new Parcel1.PContents1();
// c = p.new PContents();
c = Parcel1.cont1();
}
}

interface Contents1 {
int value();
}

class Parcel1 {
protected static class PContents1 implements Contents1 {
public int value() {
return 1;
}
}

public Parcel1() {

}
public Contents1 cont() {
//non-static method using new to generate static inner class object
return new PContents1();
}

public static Contents1 cont1() {
System.out.println("test");
//static method using new to generate static inner class object
return new PContents1();
}

public static void test(String[] args) {
Parcel1 p = new Parcel1();
Contents1 c = p.cont();
// c = p.new PContents();
c = new PContents1();
}
}
wfront 2006-01-07
  • 打赏
  • 举报
回复
一个JAVA文件中如果有public标识类,main函数要写在public类中才有作用,因为你执行类时实际就是执行public类,如果它没有main的话就会抛出
Exception in thread "main" java.lang.NoSuchMethodError: main
这样的异常了.
你可以这样用这样的命令执行>java myclass_ex
ABCatai 2006-01-07
  • 打赏
  • 举报
回复
下面是我的测试用例:

文件名: myclass.java

public class myclass {
public static void main (String[] args) {
System.out.println("Hello"); //打印"Hello"
}
}

class myclass_ex {
public static void main (String[] args) {
System.out.println("Hello Java");//打印"Hello Java"
}
运行结果:
Hello
//运行默认的public修饰符的类
//当我将public修饰符的类中的main()方法删除时,运行结果是:
Hello Java
//打印第二个类中"Hello Java"

所以我觉得楼主的想法没错,我想出现的异常应该是环境变量设置问题,我同意 crazycy(代言人) 的看法,建议楼主检查一下自己环境变量
}
yuzl32 2006-01-06
  • 打赏
  • 举报
回复
文件名: myclass.java
应该保存为:myclass_ex.java (即含有main的.java文件)
youyouan 2006-01-06
  • 打赏
  • 举报
回复
可是运行时为什么会出现下列的错误提示呢:

Exception in thread "main" java.lang.NoSuchMethodError: main
j2me_home 2006-01-06
  • 打赏
  • 举报
回复
可以
全粘架构师 2006-01-06
  • 打赏
  • 举报
回复
你这就是2个类文件了,可以通过,
main你就当他是类里的一个普通方法,只不过最优先执行
youyouan 2006-01-06
  • 打赏
  • 举报
回复
To crazycy(代言人):

我倒是同意你的看法,但令我不解的是为何会抛出以下异常呢?

Exception in thread "main" java.lang.NoSuchMethodError: main
crazycy 2006-01-06
  • 打赏
  • 举报
回复
可以;

一个文件中可以有多个class

但是有个要求就是public修饰的class至多有一个;如果有则用这个public class的类名为文件名 如果没有,则文件的命名是任意的;

main放到哪个class中是不受影响的
mlyb 2006-01-06
  • 打赏
  • 举报
回复
可以,但是运行时调myclass 类,访问的类myclass_ex需要myclass 种方法调
lzj34 2006-01-06
  • 打赏
  • 举报
回复
文件名: myclass.java

public class myclass {

.....

}

class myclass_ex {
public static void main (String[] args) {
......
}
}
改成:
文件名: myclass.java

public class myclass {
public static void main (String[] args) {
......
}


.....

}

class myclass_ex {
}

应该这样结构会好一点,程序就可以运行了
lccdylc 2006-01-06
  • 打赏
  • 举报
回复
你的是两个类,在JAVA中可以有两个类,但是这两个类应该有一定的关系(我感觉)这个程序才能运行,main是执行程序的主要方法,在一般小程序里输出都在main中,当执行第一个类的时候(因为程序执行就是按有序执行的)因为没有main()方法那就出现了错误,所以程序不能执行。--本人自己的看法
superslash 2006-01-06
  • 打赏
  • 举报
回复
可以,但是运行时只能是myclass_ex类,相当于你在测试你的不想让其他包访问的类myclass_ex

62,616

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧