Java can';t从命令行运行swing

Java can';t从命令行运行swing,java,swing,Java,Swing,我在windows中使用命令行编译并执行java程序。我已经访问并尝试编译HelloWorldSwing.java类。它工作了,但是当我尝试“java HelloWorldSwing”时,它给了我一大堆错误,并在线程“main”java.lang.NoClassDefFoundError:HelloWorldSwing(错误名称:start/HelloWorldSwing)中说了一些类似于异常的话 我尝试使用java start/HelloWorldSwing运行,它显示noClassDefFo

我在windows中使用命令行编译并执行java程序。我已经访问并尝试编译HelloWorldSwing.java类。它工作了,但是当我尝试“java HelloWorldSwing”时,它给了我一大堆错误,并在线程“main”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所在的路径中运行该命令

在我编译程序的路径中没有文件夹起始

编辑2 我用java尝试了start/HelloWorldSwing和HelloWorldSwing

我也没有发现javac有任何错误。当我使用javaw时,我得到了两个弹出窗口,上面有我之前键入的消息,java给了我NoClassDefFoundException,然后讨论了类加载器等等

编辑3 我通过删除“package start;”行使其正常工作。我要怎么做才能让它工作

javaw现在也可以工作,因为我删除了包行。

试试这个:

java HelloWorldSwing

而不是:

java启动/HelloWorldSwing

java编译器(javac)的参数是一个文件(这就是start/HelloWorldSwing.java可能工作的原因),但java解释器(java)的参数是一个类名

这就是为什么不在命令行中追加.class的原因,因为没有名为start/HelloWorldSwing的类,所以会收到错误消息(NoClassDefFoundError),该消息显示“找不到具有该名称的类定义”


为了简化操作,请从.java文件所在的同一目录编译并运行第一个程序。

已尝试代码正常工作,请确保与java文件位于同一目录,然后执行以下操作

javac HelloWorldSwing.java
java HelloWorldSwing

从何处调用
java
命令?根据描述,HelloWorldSwing.class位于文件夹“start”中,但不在包中。这可能是错误的根源。请尝试:

cd start
java HelloWorldSwing
编辑:教程中的代码确实有一个“
包开始“声明。您删除了吗?如果没有,请将HelloWorldSwing放入文件夹“开始”并运行

从当前文件夹


另请参见。

链接到的代码与问题中包含的代码不同。顶部有一行:

package start;
在Java中,包结构必须由目录结构镜像。因此,如果类位于名为“开始”的包中,则编译的类文件必须位于名为“开始”的目录中。因此,请确保HelloWorldSwing.class位于“开始”目录中,并从父目录运行以下表单:

java start.HelloWorldSwing

是的,那个页面有一个小错误:

该类使用包,但在运行指令中未使用包

你可以做两件事:

a) 删除包名(删除行
pacakge start;
)并按指示运行

b) 保留代码中的
package start;
行,将
-d
选项附加到
javac
并使用完整的类名

我希望这有帮助。

只需添加一行:

导入java.awt.*;

您可以通过以下方式编译它:

    javac HelloWorldSwing.java
您可以通过以下方式运行它:

    java -cp . HelloWorldSwing.java

这一个确实有效。

他做到了;请看问题的第一段。如果类包含包指令,则不会。@Pourqoi Litytestdata:什么没有发生?@mmyers:是的,可能错误在启动包中。:)您能从键入“javac等”的地方开始粘贴控制台的输出吗“继续键入javac etc.etc?这就是为什么您应该使用内置编辑器功能将图像上载到imgur,而不是自己管理它们。或者更好的是,根本不使用图片,而是使用代码块(比如发布这个答案)<代码>:-/
大约7年前我第一次创建这个答案时,内置编辑器并不存在。
    java -cp . HelloWorldSwing.java