|
24-01-2008, 15:51 | #1 |
Bananaman
Join Date: Jul 2006
Location: Liverpool/Edinburgh
Posts: 4,817
|
Simple Java n00b help (hopefully seriously simple)
Were instructed to use eclipse for our java work, now on the uni lab comps they use 3.2 and 3.3 (but default is 3.2) i can't get 3.2, so i'm using 3.3.
Problem is I create a new project and load to simple ass java files into it, but i cannot for the life of my run it, when i KNOW it runs fine on the uni labs (3.2). I tried it on 3.3 on the lab comps today and it spat out the exact same error, about not being able to find the main class...: "java.lang.NoClassDefFoundError: BounceMain Exception in thread "main" " I'll upload the two java files now, but i know they're Ok. What should i be looking out for? Really getting to me this, becuase i need to start some real coding but if i can't rely on it to actually interpret or compile whats the point? |
24-01-2008, 16:15 | #2 |
Bananaman
Join Date: Jul 2006
Location: Liverpool/Edinburgh
Posts: 4,817
|
Right beansprouts uploader doesn't like java or txt files... So unfortunately you get them posted here!
BounceMain Code:
import javax.swing.*; /************************************************* * This is the main application class. * All it does is initialize the application, * and open a single window. * BouncePanel does all the work. *************************************************/ public class BounceMain { JFrame mainWindow; BouncePanel helloPanel; // Create a new window, and put helloPanel inside it. public BounceMain() { mainWindow = new JFrame("Bouncing Ball"); mainWindow.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); helloPanel = new BouncePanel(); mainWindow.getContentPane().add(helloPanel); mainWindow.pack(); mainWindow.setVisible(true); } private static void createAndShowGUI() { // Make sure we have nice window decorations. JFrame.setDefaultLookAndFeelDecorated(false); // Create an actual instance of HelloBounceApp new BounceMain(); } public static void main(String[] args) { // Schedule a job for the event-dispatching thread: // creating and showing this application's GUI. javax.swing.SwingUtilities.invokeLater(new Runnable() { public void run() { createAndShowGUI(); } }); } } BouncePanel Code:
import java.awt.*; import java.awt.event.*; import java.awt.geom.*; import javax.swing.*; public class BouncePanel extends JComponent implements ComponentListener, Runnable { final static long serialVersionUID = 0; // kill warning // constants final static BasicStroke stroke = new BasicStroke(2.0f); // fields float xsize,ysize; // size of window float xpos,ypos; // position of ball float xlen,ylen; // size of ball float speed; // distance the ball moves in each frame float dx,dy; // current speed + direction of ball int delay; // delay between frames in miliseconds Thread animThread; // animation thread /************************************************* * Draws the ball on the screen. *************************************************/ public void paintComponent(Graphics g) { Graphics2D g2 = (Graphics2D) g.create(); // get the current window size Dimension dim = getSize(); xsize = dim.width; ysize = dim.height; // clear background to white g2.setPaint(Color.white); g2.fill(new Rectangle2D.Double(0,0,xsize,ysize)); // draw ball g2.setPaint(Color.red); g2.fill(new Ellipse2D.Double(xpos, ysize-ypos-ylen, xlen, ylen)); g2.setColor(Color.black); g2.draw(new Ellipse2D.Double(xpos, ysize-ypos-ylen, xlen, ylen)); g2.dispose(); } // empty methods that are required by the GUI event loop public void componentHidden (ComponentEvent e) { } public void componentMoved (ComponentEvent e) { } public void componentResized(ComponentEvent e) { } public void componentShown (ComponentEvent e) { } /**************************************************** * Checks to see if the ball has hit any walls. * Called from within run(). ****************************************************/ public void checkWalls() { if (xpos + xlen >= xsize) { xpos = xsize - xlen; dx = -dx; } if (xpos < 0) { xpos = 0; dx = -dx; } if (ypos + ylen >= ysize) { ypos = ysize - ylen; dy = -dy; } if (ypos < 0) { ypos = 0; dy = -dy; } } /*********************************************************** * This is the animation thread. * The code here is what actually causes the ball to bounce. ***********************************************************/ public void run() { while (true) { // loop forever // update position xpos += dx; ypos += dy; // check to see if the ball has hit any walls checkWalls(); // sleep a bit until the next frame try { Thread.sleep(delay); } catch (InterruptedException e) { break; } // refresh the display repaint(); } } /**************************************************** * This is a constructor for the BouncePanel class. * It initializes all the values that the class needs * in order to work properly. ****************************************************/ public BouncePanel() { // set values for all the variables xsize = 480; ysize = 360; xpos = 240; ypos = 180; xlen = 60; ylen = 60; speed = 5; dx = speed; dy = speed; delay = 10; // set up window properties setBackground(Color.white); setOpaque(true); setPreferredSize(new Dimension((int) xsize, (int) ysize)); setFocusable(true); addComponentListener(this); // start the animation thread animThread = new Thread(this); animThread.start(); } } |