Как запустить файл .class в ОС Windows 7? - PullRequest
2 голосов
/ 08 июня 2010

Это, вероятно, глупый вопрос, но как мне запустить файл класса в Windows 7? Я обычно создаю свои собственные файлы .java, а затем использую базовую среду разработки (с JDK6), чтобы скомпилировать ее в класс и запустить автоматически. Мой профессор дал файл .class, с которым мы должны много играть, но я не знаю, как его запустить. Обратите внимание, что я не могу запустить его, набрав:

java classname.class

потому что он содержит графические элементы, особенно кнопки и тому подобное. Если я сделаю выше, я получаю следующую ошибку:

java.lang.NoClassDefFoundError: Test1/2/class
Caused by: java.lang.ClassNotFoundException: Test1.2.class
    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 java.lang.ClassLoader.loadClassInternal(Unknown Source)
Could not find the main class: Test1.2.class.  Program will exit.
Exception in thread "main" 

Любая помощь будет принята с благодарностью. Спасибо.

Ответы [ 3 ]

9 голосов
/ 08 июня 2010

При запуске не включайте суффикс .class:

java classname
2 голосов
/ 08 июня 2010

Как сказал кодека, вам нужно набрать java ClassName в командной строке, и если у класса есть метод main, он будет запущен.

Java компилирует каждый класс, определенный в определенном исходном файле, в свой собственный файл класса (байт-код). Например, Apple.class, Banana.class и Cherry.class могут получить выходные данные после компиляции Apple.java, если они все определены там. Таким образом, фактическое имя класса в источнике будет соответствовать имени файла, за вычетом расширения.

Теперь, скажем, кто-то случайно (или намеренно, по звуку) переименовал файл класса. У вас есть файл с именем WrongName.java, и вы набираете java WrongName. Обратите внимание, что вывод начнется со строки:

Исключение в потоке "main" java.lang.NoClassDefFoundError: WrongName (неправильное имя: RightName)

Где RightName - это то, что должно быть. В этот момент вы переименуете свой файл в RightName.class, наберите java RightName, и, надеюсь, он запустится. И если имя имеет косую черту, то все, что предшествует косой черте, является именем пакета. Допустим, это PackageName / RightName. Сначала вам нужно создать каталог с именем PackageName и поместить в него RightName.class. Затем перейдите на один уровень вверх в ваших каталогах и введите java PackageName.RightName.

Обратите внимание на различные виды исключений: ClassNotFoundException в основном означает, что файл класса не найден. NoClassDefFoundError означает, что класс определение не найден. Если у класса нет метода main и вы пытаетесь запустить его как программу, вы получите NoSuchMethodError: main.

2 голосов
/ 08 июня 2010

В дополнение к вышесказанному, он также не должен иметь никаких шансов, что ваш O / S. Java компилируется в байтовый код, который интерпретируется вашей JVM. Ясно, что у вас установлен один, так как вы получили ошибку Java, которую вы вставили выше.

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