Можете ли вы запустить файл .class из терминала, который выводится IDE - PullRequest
0 голосов
/ 27 октября 2010

Я пытаюсь запустить файл из командной строки. Этот файл является файлом .class и является частью более крупного проекта, который я скомпилировал в Netbeans. Я перешел к файлу .class и запустил

Java MyFile

И я получил:

Exception in thread "main" java.lang.NoClassDefFoundError: PersonTest/class
Caused by: java.lang.ClassNotFoundException: PersonTest.class
   at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
   at java.security.AccessController.doPrivileged(Native Method)
   at java.net.URLClassLoader.findClass(URLClassLoader.java:205) 
   at java.lang.ClassLoader.loadClass(ClassLoader.java:321) 
   at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294) 
   at java.lang.ClassLoader.loadClass(ClassLoader.java:266)

Could not find the main class: PersonTest.class. Program will exit

Что с этим? (Должен отметить, что я работаю в Ubuntu)

Ответы [ 6 ]

1 голос
/ 27 октября 2010

Ответ выглядит следующим образом:

Exception in thread "main" java.lang.NoClassDefFoundError: PersonTest/class

Это означает, что вы не ввели:

java MyFile

, как вы сказали в своем исходном сообщении, вы ввели

java PersonTest.class

вы должны были набрать

java PersonTest
1 голос
/ 27 октября 2010

Вам нужно проверить эту полезную ссылку java - средство запуска приложений Java :

По умолчанию первый неопциональный аргумент - это имя класса, который нужно вызвать, Следует использовать полное имя класса

Итак, вам нужно написать полное имя класса (включая имя пакета).

Итак, правильный способ выполнить вашу команду - это (из корневого каталога, в котором хранятся ваши файлы классов):

> java my.package.MyFile

Также убедитесь, что все необходимые зависимости включены в classpath (-cp) аргумент (проверьте ссылку).

ОБНОВЛЕНИЕ: , чтобы включить пример настройки пути к классам:

java -classpath C:\MyProject\classes;C:\MyProject\lib\utility.jar my.package.MyFile

При этом среда выполнения Java будет искать классыв каталоге C: \ MyProject \ classes и в JAR-файле C: \ MyProject \ lib \ utility.jar.Вам понадобятся не только прямые зависимости вашего класса, но и зависимости, необходимые для файлов, на которые имеются ссылки (всего дерева).

0 голосов
/ 16 июля 2013

в соответствии с терминалом ide, android требует классов в формате DEX при их запуске.

Попытка:

dx --dex --output = practice.jar practice.class

Затем запустите, используя это:

Джава-Джар практика. Джар практика

0 голосов
/ 12 февраля 2013

Просто рассмотрим этот пример.

скажем, у меня уже есть папка src, и я написал в своем блокноте

package test.oye;

class testclass {
static public void main (String [] args)
{
int a=3;
System.out.println(a);
}
}

, затем перейдите в папку src и вы сами создадите папку с именем testи внутри это ой.Затем поместите в него свой файл .java.Тогда только cd src/test/oye (в командной строке или терминале). Оттуда же

javac testclass.java
cd src
java test.oye.testclass

Это будет работать наверняка.

Если вы не хотите помещать туда файл .java ... просто скомпилируйте файл .java и получите файл .class.Теперь создайте тестовую папку, а затем добавьте в нее файл ... и поместите в нее файл .class ....

Теперь вернитесь к src ... и введите

java test.oye.testclass;
0 голосов
/ 27 октября 2010

Если ваш класс не является полностью автономным (т. Е. Содержит только java.lang классы, такие как String), вам потребуется добавить другие классы / JAR-файлы в classpath при вызове Java.

NoClassDefFoundError (который, кстати, обычно указывает имя класса и всегда включает в себя трассировку стека) указывает на то, что внешний класс, который был доступен, когда ваш класс был скомпилирован, недоступен в пути к классам во время выполнения.

РЕДАКТИРОВАТЬ на основе обновления:

Вы неправильно запускаете процесс.Вам не нужно добавлять суффикс .class к файлу - это заставляет Java искать класс файла class в подпакете.

(PS вы сказали, что запускали java MyFile. Этоложь, ты на самом деле запустил java PersonTest.class. Если бы ты заметил, что для начала, людям было бы намного легче ответить на вопрос!)

0 голосов
/ 27 октября 2010

Да, вы можете, они компилируются Java-компилятором. Если у вас правильная версия jvm (часто работают и другие версии), ее нельзя запустить. Информации о вашей ошибке недостаточно, чтобы сказать, что пошло не так. Возможно, вы не в той папке, неправильно набрали имя класса, использовали класс в вашем коде, который не может быть найден и т. Д.

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