我在windows中使用命令行来编译并执行我的java程序。我已经转到http://java.sun.com/docs/books/tutorial/uiswing/start/compile.html并尝试编译HelloWorldSwing.java类。它是有效的,但是当我尝试"java“时,它给了我一堆错误,并且在线程”HelloWorldSwing“java.lang.NoClassDefFoundError: HelloWorldSwing (错误的名称: start/HelloWorldSwing)中出现了一些类似于异常的东西。
我尝试运行java start/HelloWorldSwing,它显示为noClassDefFoundError。使用javac我也没有得到任何错误。以下是本教程中的代码:
import javax.swing.*;
public class HelloWorldSwing {
/**
* Create the GUI and show it. For thread safety,
* this method should be invoked from the
* event-dispatching thread.
*/
private static void createAndShowGUI() {
//Create and set up the window.
JFrame frame = new JFrame("HelloWorldSwing");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//Add the ubiquitous "Hello World" label.
JLabel label = new JLabel("Hello World");
frame.getContentPane().add(label);
//Display the window.
frame.pack();
frame.setVisible(true);
}
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();
}
});
}
}编辑:已使用的javaw.
弹出窗口
“发生java异常”
另一个窗口
错误:找不到主类。错误:出现jni错误,请检查您的安装,然后重试。
运行任何java程序都没有任何问题,我是不是遗漏了什么?有没有办法知道它是什么?
我还在.java和.class所在的同一路径中运行该命令。
在我编译程序的路径中没有文件夹开始。
我在EDIT2中尝试了start/HelloWorldSwing和HelloWorldSwing。
使用javac我也没有得到任何错误。当我使用javaw时,我看到两个弹出窗口,上面有我之前输入的消息,java给我提供了NoClassDefFoundException,然后讨论了ClassLoaders之类的东西。
EDIT3我通过删除"package start;“行使其正常工作。我要怎么做才能让它正常工作呢?
删除了包行之后,javaw.java也可以工作了。
发布于 2009-02-03 23:20:22
是啊。该页面有一个小错误:
该类使用包,但在运行指令中不使用包
你可以做两件事:
a)删除包名称(删除pacakge start;行)并按照指示运行
或
b)保留代码中的package start;行,将-d选项附加到javac并使用完整的类名。
我希望这能帮到你。
发布于 2009-02-03 22:57:56
您将从何处调用java命令?根据您的描述,HelloWorldSwing.class位于"start“文件夹中,但不在包中。这很可能是错误的来源。尝试:
cd start
java HelloWorldSwing编辑:本教程中的代码中确实有一个"package start;“声明。你把它移走了吗?如果没有,将HelloWorldSwing放到"start“文件夹中,然后运行
java start.HelloWorldSwing从当前文件夹中。
另请参阅package tutorial。
发布于 2009-02-03 22:56:15
试试这个:
java HelloWorldSwing
而不是:
java start/HelloWorldSwing
java编译器( javac )的参数是一个文件(这就是start/HelloWorldSwing.java可能有效的原因),而Java解释器( java )的参数是一个类名。
这就是为什么不在命令行中附加.class,并且由于没有名为start/HelloWorldSwing的类,您会得到错误消息( NoClassDefFoundError ),即“没有找到具有该名称的类定义”。
为了简单起见,请从.java文件所在的同一目录编译并运行第一个程序。
https://stackoverflow.com/questions/509318
复制相似问题