当前位置: 首页 > 面试题库 >

找不到方法init()v

沈茂
2023-03-14
问题内容

我正在重写一个小应用程序,但是当它加载时,它给了我一个运行时异常。例外是

Exception in thread "main" java.lang.NoSuchMethodError: ClientSettings: method <
init>()V not found
        at RunClient.<init>(RunClient.java:41)
        at RunClient.main(RunClient.java:63)

这是RunClient:

import java.applet.Applet;
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Desktop;
import java.awt.Dimension;
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FilenameFilter;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
import java.net.URL;
import java.util.Properties;

import javax.imageio.ImageIO;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPopupMenu;
import javax.swing.JSeparator;


public class RunClient extends Applet implements ActionListener {

    private Robot robot;
    private static final long serialVersionUID = 1L;
    public static Properties params = new Properties();
    public JFrame mainFrame;
    public JPanel mainPane = new JPanel();
    public static String[] data;
    public String mainurl = getParameter("ip");
    public int lang = 0;
    public String frameName = getParameter("servername");
    public JPanel totalPanel;
    private JMenuBar menuBar = new JMenuBar();
    private int capNum;
    private FilenameFilter filter = new FilenameFilter() {

        @Override
        public boolean accept(File arg0, String arg1) {
            if (arg0.getName().equals("images") && arg1.endsWith("png")) {
                return true;
            }
            return false;
        }

    };
    public static final Object[][] JMENU_BUTTONS = new Object[][]{{"File", new JMenuItem("New Client"), new JSeparator(), new JMenuItem("Exit")}, {"Guides", new JMenuItem("Getting Started"), new JMenuItem("Fighting Monsters"), new JMenuItem("Money Making")}, {"Links", new JMenuItem("Wiki"), new JMenuItem("Forums"), new JMenuItem("Youtube"), new JMenuItem("Donate")}, {"Tools", new JMenuItem("Take a screenshot")}};
    public String[] getLoaderParameters() {
        return new String[]{getParameter("servername"), getParameter("ip"), getParameter("port")};
    }
    public static void main(String[] strings) {
        data = getLoaderParameters();
        new ClientSettings(data);
        RunClient runclient = new RunClient();
        runclient.doFrame();
    }

    public RunClient() {
        try {
            loadCaptureAmts();
            robot = new Robot();
        } catch(Exception e) {
            e.printStackTrace();
        }
    }

    private void loadCaptureAmts() {
        capNum = new File("./images/").listFiles(filter).length;
    }

    public void init() {
        doApplet();
    }

    void doApplet() {
        try {
            readVars();
            startClient();
        } catch (Exception exception) {
            exception.printStackTrace();
        }
    }

    public void doFrame() {
        try {
            readVars();
            openFrame();
            startClient();
        } catch (Exception exception) {
            exception.printStackTrace();
        }
    }

    public void readVars() throws IOException {
        params.put("cabbase", "g.cab");
        params.put("java_arguments", "-Xmx1024m -Dsun.java2d.noddraw=true");
        params.put("colourid", "0");
        params.put("worldid", "16");
        params.put("lobbyid", "15");
        params.put("demoid", "0");
        params.put("demoaddress", "");
        params.put("modewhere", "0");
        params.put("modewhat", "0");
        params.put("lang", "0");
        params.put("objecttag", "0");
        params.put("js", "1");
        params.put("game", "0");
        params.put("affid", "0");
        params.put("advert", "1");
        params.put("settings", "wwGlrZHF5gJcZl7tf7KSRh0MZLhiU0gI0xDX6DwZ-Qk");
        params.put("country", "0");
        params.put("haveie6", "0");
        params.put("havefirefox", "1");
        params.put("cookieprefix", "");
        params.put("cookiehost", "127.0.0.1");
        params.put("cachesubdirid", "0");
        params.put("crashurl", "");
        params.put("unsignedurl", "");
        params.put("sitesettings_member", "1");
        params.put("frombilling", "false");
        params.put("sskey", "");
        params.put("force64mb", "false");
        params.put("worldflags", "8");
        params.put("lobbyaddress", mainurl);
    }

    public void openFrame() {
        JPopupMenu.setDefaultLightWeightPopupEnabled(false);
        mainPane.setLayout(new BorderLayout());
        mainPane.add(this);
        mainPane.setPreferredSize(new Dimension(765, 503));
        totalPanel = new JPanel();
        totalPanel.setPreferredSize(new Dimension(765, 503));
        totalPanel.setLayout(new BorderLayout());
        totalPanel.add(mainPane, BorderLayout.CENTER);
        mainFrame = new JFrame(frameName);
        mainFrame.setLayout(new BorderLayout());
        mainFrame.getContentPane().add(totalPanel, BorderLayout.CENTER);
        mainFrame.setDefaultCloseOperation(3);
        //setMenuBar();
        mainFrame.pack();
        mainFrame.setVisible(true);
    }

    private void setMenuBar() {
        int id = 0;
        for (int y = 0; y < JMENU_BUTTONS.length; y++) {
            JMenu menu = new JMenu();
            for (int i = 0; i < JMENU_BUTTONS[y].length; i++) {
                if (i == 0) {
                    menu.setText((String) JMENU_BUTTONS[y][i]);
                } else if (JMENU_BUTTONS[y][i] instanceof JMenuItem){
                    JMenuItem item = (JMenuItem) JMENU_BUTTONS[y][i];
                    menu.add(item);
                    item.setActionCommand(""+ id++);
                    item.addActionListener(this);
                } else {
                    menu.add((JSeparator) JMENU_BUTTONS[y][i]);
                }
            }
            menuBar.add(menu);
        }
        mainFrame.setJMenuBar(menuBar);

    }

    public void startClient() {
        try {
            //RuntimeLoader loader = new RuntimeLoader();
            //Class clientclass = loader.loadClass("client");

            //Applet clientApplet = (Applet) clientclass.newInstance();
            //clientclass.getMethod("provideLoaderApplet",
            //      new Class[] { java.applet.Applet.class }).invoke(null,
            //              new Object[] { this });
            //clientApplet.init();
            //clientApplet.start();
            client.provideLoaderApplet(this);
            client var_client = new client();
            var_client.init();
            var_client.start();
        } catch (Exception exception) {
            exception.printStackTrace();
        }
    }


    public URL getDocumentBase() {
        return getCodeBase();
    }

    public URL getCodeBase() {
        URL url;
        try {
            url = new URL(new StringBuilder().append("http://").append(mainurl)
                    .toString());
        } catch (Exception exception) {
            exception.printStackTrace();
            return null;
        }
        return url;
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        switch (Integer.parseInt(e.getActionCommand())) {
        case 1:
            if (JOptionPane.showConfirmDialog(this, "Are you sure you want to quit?") == 0)
                System.exit(0);
            break;
        case 2:
            browse("http://dementhium.wikia.com/wiki/Getting_Started");
            break;
        case 3:
            browse("http://forums.dementhium.com/showthread.php?t=143");
            break;
        case 4:
            browse("http://dementhium.wikia.com/wiki/Dementhium_Wiki");
            break;
        case 5:
            browse("http://dementhium.wikia.com/wiki/Dementhium_Wiki");
            break;
        case 6:
            browse("http://forums.dementhium.com/");
            break;
        case 7:
            browse("http://www.youtube.com/DementhiumOfficial");
            break;
        case 8:
            browse("http://forums.dementhium.com/payments.php");
            break;
        case 9:
            writeImage(robot.createScreenCapture(getGameScreenRectangle()));
            break;
        default:
            System.out.println(Integer.parseInt(e.getActionCommand()));
        }

    }

    private Rectangle getGameScreenRectangle() {
        Rectangle rect = getBounds();
        rect.setLocation(this.getLocationOnScreen());
        return rect;
    }

    private void writeImage(BufferedImage createScreenCapture) {
        try {
            ImageIO.write(createScreenCapture, "PNG", new File("./images/capture-" + capNum++ + ".png"));
        } catch (IOException e) {
            e.printStackTrace();
        }

    }

    private void browse(String string) {
        if (Desktop.isDesktopSupported() && Desktop.getDesktop().isSupported(Desktop.Action.BROWSE)) {
            try {
                Desktop.getDesktop().browse(new URI(string));
            } catch (IOException e1) {
                e1.printStackTrace();
            } catch (URISyntaxException e1) {
                e1.printStackTrace();
            }
        }

    }

}

这是ClientSettings.java,这是从各种文件中调用的,args始终使用

public String[] data;

在RunClient中

public class ClientSettings {
    public int PORT;
    public String IPADDRESS;
    public String SERVERNAME;
    public ClientSettings(String[] args) {
        PORT = Integer.parseInt(args[2]);
        IPADDRESS = args[1];
        SERVERNAME = args[0];


    }
    }

问题答案:

的第41行在上RunClient寻找默认构造函数ClientSettings,该构造函数不存在。您定义了一个带有的构造函数String[],因此不会生成任何默认构造函数。您发布的代码似乎不是正在运行的代码,因为它似乎显示了正确的构造函数调用。



 类似资料:
  • 问题内容: 嗨,我试图建立一个小型的webapp,但是我遇到了错误。下面是我的代码 我正在使用httpclient-4.0-beta2.jar和httpcore-4.0.1.jar。看起来BasicHttpContext与我的应用程序中的其他jar冲突了,但是我无法弄清楚。任何线索将不胜感激。 问题答案: 您似乎有一个jar文件,其中包含的旧/更新版本。如果直接发生冲突,您会收到。通常,Class

  • 当尝试在我的魅族MX3上运行Android项目时,我得到了主题中提到的问题。 任何帮助都将得到感激。

  • 问题内容: 我在使用简单的hello world程序时遇到了麻烦!我希望有人能对此有所启发。 因此,我收到的错误如下: 因此,通过错误,我可以看到它 显然 缺少main,但是它在那里: 如果有帮助,我就在Mac OS / X上。 问题答案: 问题在于您的方法没有采用String数组作为参数。请使用以下签名: 要么 其他有效选项是: 在Java语言规范中,这被告知如下: 方法main必须声明为pub

  • 问题内容: 我有一个带有本机函数的小型JNI文件,该函数将char数组转换为字节数组(因此我可以将其发送到我的C ++客户端)。 定义如下: 软件包名称(加载库的位置是: 并且该类中的本机deffiniton如下: 但是当调用ConvertString函数时,我得到以下错误: 问题可能是该类(communicationmoduleTCPIP)是可运行的类吗?我不在类中运行,并且具有以下定义(当我注

  • 我知道这被问了好几次,但看起来我尝试的一切都不奏效。 我也是新手,如果我犯了任何错误,我很抱歉。 我尝试使用Gradle和eclipse构建java jar。 Gradle构建如下所示: 但我总是以: 在DefaultDependencyHandler类型的对象上找不到参数[org.springframework.boot: spring-boot-starter-data-jpa]org.gra