Java编译成多个CLASS何解?

一个Java文件编译成多个CLASS,在命令行能编译却不能运行。
如test.java->test.class,test$1.class,test$2.class,test$3.class 这么多字节码文件,怎么在命令行运行 ?
这个程序在IDE能正确运行,我需要怎样做才能在命令行运行? 运行其中任一个都会抛java.lang.NoClassDefFoundError异常 。注:只有一个类,无内部类,最了不起也就用了个Swing

这是因为你的程序里面有匿名类,匿名类编译后就会以主类$编号命名。
或者有以1、2、3命名的内部类(可能性很小)。所以才会生成这样的文件。
至于你说的不能运行你可能是使用了package打包了,在命令行中默认是不能生成包的,需要你指定才可以,所以生成的也就不能运行

匿名类的例子
new WindowAdapter() {
public void windowClosing(WindowEvent e) {
dispose();
System.exit(0);
}
}

补充————————————————————

仔细看你的程序,绝对有匿名类。用Swing的话就会有事件处理方法是用匿名类的形式定义的。Netbeans一般都这样生成。

要运行的话首先要看看你的主程序是不是打包了,有没有package这样的语句,如果有,那么编译的时候就要就要加上-d选项,如果有package语句,
假如是package a.b;那么编译:

javac -d . test.java
这样。执行:java a.b.test

然后运行的时候 java
温馨提示:内容为网友见解,仅供参考
第1个回答  2015-10-24
每一个类对应一个class文件
编译一个java文件会生成多个class文件
说明在此Java文件中调用了多个类本回答被网友采纳
第2个回答  2009-03-01
你一个文件里面定义了多个class,运行的时候只需用运行有main方法的那个类就可以了!
第3个回答  2009-02-28
你这个文件包含了多个类 运行你文件名相同的类就可以了 至于编译出来的文件

是会自动调用的你不用理会他们就可以了
第4个回答  2009-02-28
首先你的命令行写错了,这样写:
编译时:javac test.java
运行时:java test
这样就可以运行了。

分析你的“这么多字节码文件”的问题:
从你的class文件看你的主类应是test.java。在这一主类中你还写了3个匿名内部类。因为你的后面三个class文件的名字是一个数字(1,2,3),只是内部类的话是不可以用一个数字来给一个类命名的

Java编译成多个CLASS何解?
这是因为你的程序里面有匿名类,匿名类编译后就会以主类$编号命名。或者有以1、2、3命名的内部类(可能性很小)。所以才会生成这样的文件。至于你说的不能运行你可能是使用了package打包了,在命令行中默认是不能生成包的,需要你指定才可以,所以生成的也就不能运行 匿名类的例子 new WindowAdapter(...

为什么java程序要写上class,这个有什么用
class 就是类~ 你写的时候会提供一些方法接口,而你使用的时候不需要知道里面是如何实现的。就比如这是一个手机..而你只要会按按钮就行了,按了按钮之后如何显示 手机里面的内容就不需要用户去关心了。 class 就是这个手机。 你提供了手机的使用方法~ 而程序人员负责手机的内容实现。你只需要提供几...

java中class<t>和class<?>还有class之间有什么区别?
在Java编程中,理解Class、Class>和Class的区别是至关重要的。Class的是类型上的全称量词 ∀,表示无论何种类型代入都满足条件。Class的是类型上的存在量词 ∃,表示至少存在一种类型使条件成立。在Java中,由于存在子类型的概念,这个存在类型可以指定上界或下界。许多人常将其误认为是协变逆...

JAVA语言是解释型还是编译型语言
1.编译型语言在程序执行之前,有一个单独的编译过程,将程序翻译成机器语言,以后执行这个程序的时候,就不用再进行翻译了。2.解释型语言,是在运行的时候将程序翻译成机器语言,所以运行速度相对于编译型语言要慢。3.C\/C++ 等都是编译型语言,而Java,C#等都是解释型语言。4.虽然Java程序在运行之前...

java 多态怎么回事,如何实现?
例如,DerivedC类在继承BaseClass中定义的函数外,还增加了几个函数(例如 myFun())分析:当你使用父类引用指向子类的时候,其实jvm已经使用了编译器产生的类型信息调整转换了。这里你可以这样理解,相当于把不是父类中含有的函数从虚拟函数表中设置为不可见的。注意有可能虚拟函数表中有些函数地址...

C#和Java都是即是编译语言又是解释语言吗
执行示例页面时,可以在这里看到 JSP 页面如何被转换成 Java 源文件,然后又被编译成 class 文件(即 Servlet )。 JSWDK 软件包中的示例页面分为两类,它们或者是 JSP 文件,或者是包含一个表单的 HTML 文件,这些表单均由 JSP 代码处理。与 ASP 一样, JSP 中的 Java 代码均在服务器端执行。因此,在浏览器中...

电脑class删了怎么办
*.class是java程序编译后的中间语言文件。 一般可能是你安装的需要java支持的软件自己释放到桌面的,而且这个程序自动启动。这么猜想不是你自己给手机安装的软件就是病毒了。 你在注册表里查看常规启动项,LocalMachine\/Software\/Microsoft\/Windows\/CurrentVersion\/Run 和 RunOnce 看到莫名其妙的就可以删了如果你没有足够经...

jvm Class对象的作用?
Class类,类类也是Java中存在的一个真实类。JDK的Lang软件包。类类的实例表示Java应用程序运行时的类枚举或接口和注释(每个Java类运行时被表示为JVM中的类对象),类对象可以通过类名来获得。类,类型。getClass(),Class.forName(“类名”)。数组还映射到一个类对象,该类对象由具有相同元素类型和...

java语言的编译过程与一般编程语言的编译过程有何不同
Java源码编译由以下三个过程组成:分析和输入到符号表 注解处理 语义分析和生成class文件 JVM的类加载是通过ClassLoader及其子类来完成的 JVM是基于栈的体系结构来执行class字节码的。线程创建后,都会产生程序计数器(PC)和栈(Stack),程序计数器存放下一条要执行的指令在方法内的偏移量,栈中存放一个...

JAVA中的一个小问题
public class Rectangle extends Shape { private int x, y, width, height; public void draw(Canvas c) { \/\/ ... }}这些类可以在一个画布(Canvas)上被画出来:publicclass Canvas { publicvoid draw(Shape s) { s.draw(this); }}所有的图形通常都有很多个形状。假定它们用一个list来表示,Canvas里有...

相似回答