【问题标题】:Java Compile Error: class Appletprac is public, should be declared in a file named Appletprac.javaJava 编译错误:类 Appletprac 是公共的,应在名为 Appletprac.java 的文件中声明
【发布时间】:2014-03-29 10:10:53
【问题描述】:

当我编译 java 程序时,我得到这个错误:Appletprac 是公共的,应该在一个名为 Appletprac.java 的文件中声明

这是我的java代码:

import java.applet.*;
import java.awt.*;        // Graphics Class
import javax.swing.*;
import java.awt.event.*;
/*<applet code="Appletprac.class" width="500" height="500"> </applet>*/
public class Appletprac extends JApplet implements ActionListener
{
JButton OK;
JRadioButton Font_Style1,Font_Style2,Font_Style3;
ButtonGroup bg;
JCheckBox Font_Family_Name;
JTextField jt;
int i;
         String s="";
public void init()
{
    OK=new JButton("OK");       
    Font_Family_Name=new JCheckBox("Serif");
    Font_Style1=new JRadioButton("Plain");
    Font_Style2=new JRadioButton("Bold");   
    Font_Style3=new JRadioButton("BoldItalic");
    bg=new ButtonGroup();
    jt=new JTextField(20);
    this.setLayout(new FlowLayout());
    bg.add(Font_Style1);
    bg.add(Font_Style2);
    bg.add(Font_Style3);    
                      this.add(jt);
    this.add(OK);
    this.add(Font_Family_Name);
    this.add(Font_Style1);
    this.add(Font_Style2);
    this.add(Font_Style3); 
    OK.addActionListener(this);
    Font_Style1.addActionListener(this);    
    Font_Style2.addActionListener(this);
    Font_Style3.addActionListener(this);
}
public void start()
{}
public void stop()
{}  
public void paint(Graphics g)
{
    g.clearRect(50,50,500,300);
    g.draw3DRect(50,50,500,300,false);
    g.setFont(new Font(s,i,30));
    g.setColor(Color.BLUE);
    g.drawString(jt.getText(),100,100);

}
public void actionPerformed(ActionEvent e)
{
    if(e.getSource()==Font_Style1)
        i=Font.PLAIN;
    if(e.getSource()==Font_Style2)
                  i=Font.BOLD;
    if(e.getSource()==Font_Style3)
    {
                  i=Font.ITALIC;
                  int j=Font.BOLD;
                  i=i+j;
    }       
    if(e.getSource()==Font_Family_Name || e.getSource()==OK)
    {
        if(Font_Family_Name.isSelected())
            s="Serif";
        else
                      s="Tall paul";
    }       
    repaint();
}
}

【问题讨论】:

  • 错误对我来说很清楚。你的文件名是什么?
  • 我认为错误信息中已经包含了解决方法:Did you name your file Appletprac.java ?
  • 好的,我通过 appletprac.java 名称保存文件。我已将其重命名为 Appletprac.java,现在正在编译。但是在运行时出现另一个错误:在 Appletprac 类中找不到主方法,请将主方法定义为:public static void main(String[] args) 或 JavaFX 应用程序类必须扩展 javafx.aaplication.Application

标签: java class compilation applet declaration


【解决方案1】:

Java 允许每个文件有一个公共类,公共类名应与文件名相同。对你来说,你应该将文件名设为 Appletprac.java

你可以看到这个链接Why are filenames in Java the same as the class name?

这样写一个html文件:

test.html

<html>
<applet 
   code = Appletprac.class
   width = 200
   height = 100>
</applet>
</html>

将编译好的.class文件放到同一个文件夹下,在cmd中输入appletviewer test.html

【讨论】:

  • 好的,我的程序正在编译,但运行后我收到此错误:在类 Appletprac 中找不到主方法,请将主方法定义为:public static void main(String[] args) 或JavaFX 应用程序类必须扩展 javafx.aaplication.Application
  • 您是否将其作为 Java 应用程序运行?您应该将其作为 Java Applet 运行
  • 如果你使用eclipse,可以点击run as applet。否则你可以写一个简单的html文件来运行它
  • 哦,我是把它作为一个 java 应用程序运行的!谢谢你的帮助 ! :) 我在命令提示符下运行这个程序。
  • @Tanmay 很高兴为您提供帮助:)
【解决方案2】:

如果你的外部类有一个public 修饰符,它应该在具有相同类名和.java 扩展名的文件中。这是一个简单的 java 约定,用于在文件系统中构造类和包。

【讨论】:

    猜你喜欢
    • 2015-08-31
    • 1970-01-01
    • 2014-10-24
    • 2020-04-13
    • 2021-05-16
    • 2020-12-27
    • 1970-01-01
    • 2011-11-29
    相关资源
    最近更新 更多