如图所示,最近在看《 java 核心技术》一书,执行书上的案例却一直提示“找不到或无法加载主类”
在网上找的方法都是关于配置环境变量的,也都试了,都不能解决问题
于是在同目录下写了一个 hello world ,却能运行了
我很好奇书上的案例为什么还是不能运行
代码如下:
package sizedFrame;
import java.awt.*;
import javax.swing.*;
/**
* @version 1.32 2007-04-14
* @author Cay Horstmann
*/
public class SizedFrameTest
{
public static void main (String[] args )
{
EventQueue.invokeLater (new Runnable ()
{
public void run ()
{
JFrame frame = new SizedFrame ();
frame.setTitle ("SizedFrame");
frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE );
frame.setVisible (true );
}
});
}
}
class SizedFrame extends JFrame
{
public SizedFrame ()
{
// get screen dimensions
Toolkit kit = Toolkit.getDefaultToolkit ();
Dimension screenSize = kit.getScreenSize ();
int screenHeight = screenSize.height;
int screenWidth = screenSize.width;
// set frame width, height and let platform pick screen location
setSize (screenWidth / 2, screenHeight / 2 );
setLocationByPlatform (true );
// set frame icon
Image img = new ImageIcon ("icon.gif").getImage ();
setIconImage (img );
}
}
还有一个好奇的地方就是这个文件里明明只有两个类,为何编译过后会出现三个类文件?
那个 SizedFrameTest$1.class 是什么情况?
Java 新人,请轻喷
1
zonghua 2015-09-13 15:05:56 +08:00
java SizedFrameTest 运行,不需要后缀,貌似还要配置好 classpath 变量才能正确加载其他类。还是用 IDE 吧
```java C:\Users\me\Desktop>java SizedFrameTest Exception in thread "main" java.lang.NoClassDefFoundError: SizedFrameTest (wrong name: sizedFrame/SizedFrameTest ) at java.lang.ClassLoader.defineClass1 (Native Method ) at java.lang.ClassLoader.defineClass (Unknown Source ) at java.security.SecureClassLoader.defineClass (Unknown Source ) at java.net.URLClassLoader.defineClass (Unknown Source ) at java.net.URLClassLoader.access$100 (Unknown Source ) at java.net.URLClassLoader$1.run (Unknown Source ) at java.net.URLClassLoader$1.run (Unknown Source ) at java.security.AccessController.doPrivileged (Native Method ) at java.net.URLClassLoader.findClass (Unknown Source ) at java.lang.ClassLoader.loadClass (Unknown Source ) at sun.misc.Launcher$AppClassLoader.loadClass (Unknown Source ) at java.lang.ClassLoader.loadClass (Unknown Source ) at sun.launcher.LauncherHelper.checkAndLoadMain (Unknown Source ) ``` |
2
SoloCompany 2015-09-13 15:17:15 +08:00 via Android 1
package
|
3
Cloudee 2015-09-13 15:20:04 +08:00 1
去上一级目录执行 java sizedFrame. SizedFrameTest ,你的 java 类是在 sizedFrame 包里的,所以生成的 class 需要放到 sizedFrame 目录下,而且执行的时候也需要带着包名
|
4
EchoChan 2015-09-13 15:20:44 +08:00 via Android 1
含有包名的 Java 代码在 cmd 下编译运行需要去掉 Java 代码中的报名或命令中加上包名前缀。
1 、把 package sizedFrame; 2 、编译命令变为 Javac |
5
EchoChan 2015-09-13 15:22:02 +08:00 via Android
2 、编译命令变为 javac sizedFrame.SizedFrameTest
其实我前几天也是遇到这问题。 |