не могу запустить свинг из командной строки - PullRequest
6 голосов
/ 04 февраля 2009

Я использую командную строку в Windows, чтобы скомпилировать, а затем выполнить мои Java-программы. я пошел на http://java.sun.com/docs/books/tutorial/uiswing/start/compile.html и попытался скомпилировать класс 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();
            }
        });
    }
}

РЕДАКТИРОВАТЬ: используется челюсть

всплывающее окно

«произошла исключительная ситуация Java»

другое окно

"ошибка: не удалось найти основной класс. ошибка: произошла ошибка jni, пожалуйста, проверьте вашу установку и попробуйте снова. "

никогда не было проблем с запуском java-программ, я что-то упустил? есть ли способ узнать что это такое?

Я также запускаю команду по тому же пути, где находятся .java и .class.

нет пути к папке, в которой я скомпилировал программу.

EDIT2 Я попытался запустить / HelloWorldSwing и HelloWorldSwing с Java.

Я также не получаю никаких ошибок с Javac. Я получаю 2 всплывающих окна с сообщениями, которые я набрал ранее, когда я использую javaw, и java выдает мне NoClassDefFoundException, затем говорит о ClassLoaders и еще много чего.

EDIT3 Я получил его на работу, удалив "начало пакета"; линия. что я должен сделать, чтобы заставить это работать с этим?

javaw также работает теперь, когда я удалил строку пакета.

Ответы [ 7 ]

4 голосов
/ 04 февраля 2009

Откуда вы вызываете команду java? Из вашего описания HelloWorldSwing.class находится в папке «start», но не в пакете. Это, вероятно, источник ошибки. Попробуйте:

cd start
java HelloWorldSwing

РЕДАКТИРОВАТЬ: код из учебника имеет объявление "package start;". Вы удалили это? Если нет, поместите HelloWorldSwing в папку «start» и запустите

java start.HelloWorldSwing

из текущей папки.

См. Также учебник по .

3 голосов
/ 04 февраля 2009

Попробуйте это:

Java HelloWorldSwing

Вместо:

запуск Java / HelloWorldSwing

Аргументом для компилятора java (javac) является файл (поэтому, вероятно, start / HelloWorldSwing.java сработал), но аргумент интерпретатора Java (java) - это имя класса.

Вот почему вы не добавляете .class в командную строку, и поскольку нет класса с именем start / HelloWorldSwing Вы получаете это сообщение об ошибке (NoClassDefFoundError), которое гласит «Нет класса определение найдено с этим именем).

Чтобы упростить задачу, скомпилируйте и запустите свои первые программы из того же каталога, где находятся ваши файлы .java.

2 голосов
/ 04 февраля 2009

Да. На этой странице есть небольшая ошибка:

Класс использует пакет, но в инструкциях по запуску пакет не используется

Вы можете сделать две вещи:

a) Удалите имя пакета (удалите строку pacakge start;) и запустите, как указано

или

b) Оставьте строку package start; в коде, добавьте параметр -d к javac и используйте полное имя класса.

Надеюсь, это поможет.

1 голос
/ 04 февраля 2009

Код, на который вы ссылались, не совпадает с кодом, который вы указали в своем вопросе. Эта строка вверху:

package start;

В Java структура пакета должна быть отражена структурой каталогов. Поэтому, если ваши классы находятся в пакете с именем «start», скомпилированные файлы классов должны находиться в каталоге с именем «start». Итак, убедитесь, что HelloWorldSwing.class находится в каталоге 'start' и запустите следующую форму из родительского каталога:

java start.HelloWorldSwing
1 голос
/ 04 февраля 2009

Пробовал, код работает нормально, убедитесь, что вы находитесь в том же каталоге, что и файл Java, и выполните

javac HelloWorldSwing.java
java HelloWorldSwing
0 голосов
/ 24 октября 2015

вы можете скомпилировать его:

    javac HelloWorldSwing.java

вы можете запустить его:

    java -cp . HelloWorldSwing.java

Этот действительно работает.

0 голосов
/ 26 ноября 2011

Просто добавьте строку:

import java.awt.*;

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...