18

I'm rewriting an applet I have, but when it loads it's giving me a runtime exception. The exception is

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) 

Here is 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(); } } } } 

and here is ClientSettings.java, this is called from various files, args is always defined using

public String[] data; 

in 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]; } } 

3 Answers 3

17

Line 41 of RunClient is looking for a default constructor on ClientSettings, which doesn't exist. You've defined a constructor that takes a String[], so no default constructor is generated. It looks like the code you've posted isn't what's running, because it seems to show a correct constructor call.

Sign up to request clarification or add additional context in comments.

Comments

2

I had the same problem, but when writing unit tests. The test was failing with this exception when creating the object I wanted to test. I did add a new constructor in the class I was testing and I think I was running an older code which didn't have this constructor. Cleaning and rebuilding the workspace (with maven) solved it for me.

Comments

0

When I got this error it was because the bean definition had a private constructor but the bean required injected dependencies

@RequiredArgsConstructor(access = AccessLevel.PRIVATE) 

Guess this makes sense that if Micronaut cannot use the args constructor then it needs some lifecycle method to sort out the dependencies.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.