Java 当试图运行程序时,非法类文本意味着什么?

Java 当试图运行程序时,非法类文本意味着什么?,java,jar,exe,drjava,Java,Jar,Exe,Drjava,我在Dr.Java中创建了一个项目,编译后可以自动转换为Jar文件,然后转换为.exe,但我一直遇到以下错误: Illegal class literal 当我试着运行这个项目时,你知道为什么会发生这种情况吗 这是主要课程: import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.io.*; import java.util.*; public class CoolingTowerFrame

我在Dr.Java中创建了一个项目,编译后可以自动转换为Jar文件,然后转换为
.exe
,但我一直遇到以下错误:

 Illegal class literal
当我试着运行这个项目时,你知道为什么会发生这种情况吗

这是主要课程:

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.*;

public class CoolingTowerFrame extends JFrame
{ 
  public JLabel testLabel = new JLabel("All Temperatures in (deg)F");
  public JLabel testCalculationsLabel = new JLabel("");
  public JPanel testPanel = new JPanel();
  public JPanel textFieldPanel = new JPanel();
  public JPanel flowRatePanel = new JPanel();
  public JPanel wetBulbTempPanel = new JPanel();
  public JPanel waterInTempPanel = new JPanel();
  public JPanel waterOutTempPanel = new JPanel();
  public JPanel buttonPanel = new JPanel();
  public JTextField flowRateField = new JTextField(10);
  public JTextField wetBulbTempField = new JTextField(10);
  public JTextField waterInTempField = new JTextField(10);
  public JTextField waterOutTempField = new JTextField(10);
  public JLabel flowRateLabel = new JLabel();
  public JLabel wetBulbTempLabel = new JLabel();
  public JLabel waterInTempLabel = new JLabel();
  public JLabel waterOutTempLabel = new JLabel();
  public JButton submitButton = new JButton("Check Calculations");
  public JButton clearButton = new JButton("Clear");
  public JButton unknownWetBulbButton = new JButton("Unknown");
  public JButton findButton = new JButton("Find Unit");
  public int roundCoolingTons;
  public int approach;
  public int range;
  public int wetBulbTemp;
  public int flowRate;

  public CoolingTowerFrame(String title, int frameWidth, int frameHeight)
  {
    super(title);
    Toolkit toolkit = Toolkit.getDefaultToolkit();
    Dimension dimensions = toolkit.getScreenSize();
    int x = (dimensions.width - frameWidth)/2; 
    int y = (dimensions.height - frameHeight)/2;
    setBounds(x, y, frameWidth, frameHeight);

    submitButton.addActionListener(new ButtonListener());
    clearButton.addActionListener(new ButtonListener());
    unknownWetBulbButton.addActionListener(new ButtonListener());
    findButton.addActionListener(new ButtonListener());

    flowRateLabel.setFont(new Font("Arial", Font.BOLD, 12));
    flowRateLabel.setText("Flow Rate (GPM) :");
    flowRatePanel.add(flowRateLabel);
    flowRatePanel.add(flowRateField);
    textFieldPanel.add(flowRatePanel);

    wetBulbTempLabel.setFont(new Font("Arial", Font.BOLD, 12));
    wetBulbTempLabel.setText("Wet Bulb:");
    wetBulbTempPanel.add(wetBulbTempLabel);
    wetBulbTempPanel.add(wetBulbTempField);
    wetBulbTempPanel.add(unknownWetBulbButton);
    textFieldPanel.add(wetBulbTempPanel);

    waterInTempLabel.setFont(new Font("Arial", Font.BOLD, 12));
    waterInTempLabel.setText("Water In:");
    waterInTempPanel.add(waterInTempLabel);
    waterInTempPanel.add(waterInTempField);
    textFieldPanel.add(waterInTempPanel);

    waterOutTempLabel.setFont(new Font("Arial", Font.BOLD, 12));
    waterOutTempLabel.setText("Water Out:");
    waterOutTempPanel.add(waterOutTempLabel);
    waterOutTempPanel.add(waterOutTempField);
    textFieldPanel.add(waterOutTempPanel);

    add(textFieldPanel, BorderLayout.CENTER);

    buttonPanel.add(submitButton);
    buttonPanel.add(clearButton);
    buttonPanel.add(findButton);

    add(buttonPanel, BorderLayout.SOUTH); 

    testPanel.add(testLabel);
    testPanel.add(testCalculationsLabel);
    add(testPanel, BorderLayout.NORTH);
  }

  public CoolingTowerFrame(String stringWetBulb)
  {
    super("Cooling Tower Selection Program");
    Toolkit toolkit = Toolkit.getDefaultToolkit();
    Dimension dimensions = toolkit.getScreenSize();
    int x = (dimensions.width - 315)/2; 
    int y = (dimensions.height - 250)/2;
    setBounds(x, y, 315, 250); 
    setVisible(true);
    setResizable(false);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    wetBulbTempField.setText(stringWetBulb);
    wetBulbTempField.setEditable(false);

    submitButton.addActionListener(new ButtonListener());
    clearButton.addActionListener(new ButtonListener());
    unknownWetBulbButton.addActionListener(new ButtonListener());
    findButton.addActionListener(new ButtonListener());

    flowRateLabel.setFont(new Font("Arial", Font.BOLD, 12));
    flowRateLabel.setText("Flow Rate (GPM):");
    flowRatePanel.add(flowRateLabel);
    flowRatePanel.add(flowRateField);
    textFieldPanel.add(flowRatePanel);

    wetBulbTempLabel.setFont(new Font("Arial", Font.BOLD, 12));
    wetBulbTempLabel.setText("Wet Bulb:");
    wetBulbTempPanel.add(wetBulbTempLabel);
    wetBulbTempPanel.add(wetBulbTempField);
    wetBulbTempPanel.add(unknownWetBulbButton);
    textFieldPanel.add(wetBulbTempPanel);

    waterInTempLabel.setFont(new Font("Arial", Font.BOLD, 12));
    waterInTempLabel.setText("Water In:");
    waterInTempPanel.add(waterInTempLabel);
    waterInTempPanel.add(waterInTempField);
    textFieldPanel.add(waterInTempPanel);

    waterOutTempLabel.setFont(new Font("Arial", Font.BOLD, 12));
    waterOutTempLabel.setText("Water Out:");
    waterOutTempPanel.add(waterOutTempLabel);
    waterOutTempPanel.add(waterOutTempField);
    textFieldPanel.add(waterOutTempPanel);

    add(textFieldPanel, BorderLayout.CENTER);

    buttonPanel.add(submitButton);
    buttonPanel.add(clearButton);
    buttonPanel.add(findButton);

    add(buttonPanel, BorderLayout.SOUTH); 

    testPanel.add(testLabel);
    testPanel.add(testCalculationsLabel);
    add(testPanel, BorderLayout.NORTH);
  }


  private class ButtonListener implements ActionListener
  {
    public void actionPerformed(ActionEvent e)
    {
      if (e.getSource() == submitButton)
      {
        try
        {
          flowRate = Integer.parseInt(flowRateField.getText());
          wetBulbTemp = Integer.parseInt(wetBulbTempField.getText());
          int waterInTemp = Integer.parseInt(waterInTempField.getText());
          int waterOutTemp = Integer.parseInt(waterOutTempField.getText());

          testLabel.setText("");

          double coolingTons = calculateCoolingTons(flowRate, waterInTemp, waterOutTemp);
          Double roundedTemp = new Double(coolingTons);
          roundedTemp = Math.rint(roundedTemp);
          roundCoolingTons = roundedTemp.intValue();
          approach = calculateApproach(waterOutTemp, wetBulbTemp);
          range = calculateRange(waterInTemp, waterOutTemp);

          testCalculationsLabel.setText("Cooling Tons: " + roundCoolingTons + " Approach: " + approach + " Range: " + range);
        }
        catch(NumberFormatException ex)
        {
          testLabel.setText("Improper Imput");
          testCalculationsLabel.setText("Unable to perform calculations");
        }
      }
      else if (e.getSource() == findButton)
      {
        if ((roundCoolingTons == 0) && (approach == 0) && (range == 0))
        {
          testLabel.setText("Please Fill in Text Fields to Find Unit");
        }
        else
        {
          JFrame selectUnit = new WetBulbChart(flowRate, wetBulbTemp, roundCoolingTons, approach, range);
        }
      }
      else if (e.getSource() == clearButton)
      {
        testLabel.setText("All Temperatures in (deg)F");
        flowRateField.setText("");
        wetBulbTempField.setText("");
        wetBulbTempField.setEditable(true);
        waterInTempField.setText("");
        waterOutTempField.setText("");
        testCalculationsLabel.setText("");
      }
      else
      {
        JFrame wbf1 = new WetBulbByLocationFrame1();
      }
    }
  }

  public static double calculateCoolingTons(int flowrate, int waterin, int waterout)
  {
    int differential = (waterin - waterout);
    double tons = ((differential*flowrate)/30.00);
    tons = Math.rint(tons);
    return tons;
  }

  public static int calculateApproach(int waterout, int wetbulb)
  {
    int approach = (waterout - wetbulb);
    return approach;
  }

  public static int calculateRange(int waterin, int waterout)
  {
    int range = (waterin - waterout);
    return range;
  }

  public static void main(String []args)
  {
    JFrame frame = new CoolingTowerFrame("Cooling Tower Selection Program", 315, 250);
    frame.setVisible(true);
    frame.setResizable(false);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  }
}
这是我按run后的错误屏幕截图:

我不完全理解drjava的问题。我敢打赌,如果在控制台中键入“run CoolingTowerFrame”,它将正常工作。

我也遇到了这个错误。快把我逼疯了。我在DrJava中建立了一个项目,其中有一个名为“我的游戏”的文件夹,里面有两个文件夹:srcclass。我错误地将Game.class文件设置为主类。一旦我更正了项目属性——将主类更改为Game.java,错误就消失了

你能发布一些代码来处理这个错误吗?你有关于这个异常的更多细节吗?或者是你试图运行的代码片段?编辑后注意:通常这些异常是由于泛型类而发生的,我可以发布主类,但不能发布整个类program@user1469139:发布导致问题的最短程序。请将代码片段压缩到相关部分。