

如图所示,最近在看《 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.LaunherHelper.checkAndLoadMain (Unknown Source ) ``` |
2 SoloCompany 2015-09-13 15:17:15 +08:00 via Android package |
3 Cloudee 2015-09-13 15:20:04 +08:00 去上一级目录执行 java sizedFrame. SizedFrameTest ,你的 java 类是在 sizedFrame 包里的,所以生成的 class 需要放到 sizedFrame 目录下,而且执行的时候也需要带着包名 |
4 EchoChan 2015-09-13 15:20:44 +08:00 via Android 含有包名的 Java 代码在 cmd 下编译运行需要去掉 Java 代码中的报名或命令中加上包名前缀。 1 、把 package sizedFrame; 2 、编译命令变为 Javac |
5 EchoChan 2015-09-13 15:22:02 +08:00 via Android 2 、编译命令变为 javac sizedFrame.SizedFrameTest 其实我前几天也是遇到这问题。 |