首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法从命令行运行swing

无法从命令行运行swing
EN

Stack Overflow用户
提问于 2009-02-03 22:52:49
回答 7查看 14.6K关注 0票数 7

我在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我也没有得到任何错误。以下是本教程中的代码:

代码语言:javascript
复制
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也可以工作了。

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2009-02-03 23:20:22

是啊。该页面有一个小错误:

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

你可以做两件事:

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

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

我希望这能帮到你。

票数 2
EN

Stack Overflow用户

发布于 2009-02-03 22:57:56

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

代码语言:javascript
复制
cd start
java HelloWorldSwing

编辑:本教程中的代码中确实有一个"package start;“声明。你把它移走了吗?如果没有,将HelloWorldSwing放到"start“文件夹中,然后运行

代码语言:javascript
复制
java start.HelloWorldSwing

从当前文件夹中。

另请参阅package tutorial

票数 4
EN

Stack Overflow用户

发布于 2009-02-03 22:56:15

试试这个:

java HelloWorldSwing

而不是:

java start/HelloWorldSwing

java编译器( javac )的参数是一个文件(这就是start/HelloWorldSwing.java可能有效的原因),而Java解释器( java )的参数是一个类名。

这就是为什么不在命令行中附加.class,并且由于没有名为start/HelloWorldSwing的类,您会得到错误消息( NoClassDefFoundError ),即“没有找到具有该名称的类定义”。

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

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/509318

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档