javac *.java prevodi bez problema, ali pri izvrshavanju nastaje problem. Sledecci kod ne mozze da se izvrshi ako se ukljuche redovi "package mypackage" i "import mypackage" u oba fajla, dok sve lepo radi kad ih nema!?
Code:
/* MyMain.java
Prikazuje jednostavan JFrame sa JButton koji pokrecce MyDialog.
*/
// package mypackage;
// import mypackage.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class MyMain extends JFrame
{
// Fields
JButton b = new JButton("button");
// Constructors
public MyMain()
{
b.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
JDialog d = new MyDialog(MyMain.this);
}
});
getContentPane().setLayout(new FlowLayout());
getContentPane().add(b);
addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
setSize(200, 200);
setLocation(100, 100);
setVisible(true);
}
// Methods
public static void main(String args[])
{
MyMain m = new MyMain();
}
}
Code:
/* MyDialog.java
Prazan JDialog.
*/
// package mypackage;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
class MyDialog extends JDialog
{
public MyDialog(JFrame parent)
{
super(parent, "My Dialog", true);
addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
dispose();
}
});
setSize(100, 100);
setLocation(100, 100);
setVisible(true);
}
}
Sve se lepo prevede ali "java MyMain" izbacuje
Exception in thread "main" java.lang.NoClassDefFoundError: MyMain (wrong name: mypackage/MyMain)
at java.lang.ClassLoader.defineClass0(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:488)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:106)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:243)
at java.net.URLClassLoader.access$100(URLClassLoader.java:51)
at java.net.URLClassLoader$1.run(URLClassLoader.java:190)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:183)
at java.lang.ClassLoader.loadClass(ClassLoader.java:294)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:288)
at java.lang.ClassLoader.loadClass(ClassLoader.java:250)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:310)