Я пытаюсь запустить инструмент на основе java с использованием синтаксиса командной строки следующим образом: java -cp archive.jar archiveFolder.theMainClassName. Хотя класс, который я ищу, , основной класс, «theMainClassName» находится в файле archive.jar, а в архиве, указанном на входе, я продолжаю получать ошибку, которую мой класс не видит. Есть ли у кого-нибудь идеи относительно этой проблемы? Спасибо заранее,Проблема командной строки Java с чтением класса из архива Jar
ответ
Вот конкретный пример того, что делает работы, так что вы можете сравнить свои собственные си tuation.
Возьмите этот код и поместите его в любом месте в файле с именем MainClass.java
. (Я предполагал, каталог под названием src
позже Обычно вы бы расположить источник, чтобы соответствовать пакет, конечно..)
package archiveFolder;
public class MainClass
{
public static void main(String[] args)
{
System.out.println("I'm MainClass");
}
}
Затем запустите каждый из этих команд:
# Compile the source
javac -d . src/MainClass.java
# Build the jar file
jar cf archive.jar archiveFolder
# Remove the unpackaged binary, to prove it's not being used
rm -rf archiveFolder # Or rmdir /s /q archiveFolder on Windows
# Execute the class
java -cp archive.jar achiveFolder.MainClass
Результат :
I'm MainClass
Как вы строите свой файл jar? Является ли код в соответствующем пакете?
Возможно, с java -jar archive.jar
?
Конечно, это предполагает манифеста указывает на правый класс ...
Вы должны дать точное сообщение, которое вы получили, это может пролить больше света.
EDIT: см. Working with Manifest Files: The Basics для получения информации о настройке точки входа приложения (основной класс) в файле манифеста jar.
Это на самом деле не отвечает на вопрос ... он не пытается запустить банку, а конкретный класс в банке. Это почти наверняка проблема упаковки. – 2008-11-15 22:31:39
ли theMainClassName класс имеет следующий пакет линию: в верхней части
package archiveFolder
Вам нужен файл класс, чтобы быть в той же структуре каталогов, как объявленный пакет. Так что если у вас что-то вроде:
org/jc/tests/TestClass.class
его исходный файл должен выглядеть следующим образом:
package org.jc.tests;
public class TestClass {
public static void main(String[] args) {
System.out.printf("This is a test class!\n");
}
}
Затем вы можете использовать следующие действия для создания .jar файл и запустить его из командной строки (предполагая, что текущий каталог находится на верхнем уровне, чуть выше орга):
$ jar -cf testJar.jar org/jc/tests/*.class
$ java -cp testJar.jar org.jc.tests.TestClass
Обычно это происходит, когда зависимый класс (статический член) не найден - как это, используя log4j:
public class MyClass {
private static Logger log = Logger.getLogger("com.example");
}
Причина заключается в том, что инициализация такого статического элемента может быть понята как часть class loading - ошибки, приводящие к тому, что класс не будет доступен (загружаемый), что приведет к описанной ошибке.
Статические конструкторы являются еще одной из возможных причин:
public class MyClass {
static {
// <b>any</b> error caused here will cause the class to
// not be loaded. Demonstrating with stupid typecast.
Object o = new String();
Integer i = (Integer) o;
}
}
Я думаю, что другие покрыли некоторые общие вещи здесь. Я бы поставил банку и убедился, что класс указан. Я также дважды проверил бы, что класс является общедоступным, а метод «public static void main (String [] arg)».
- 1. Java - Проблема с чтением файла
- 2. Как перекомпилировать файл jar из командной строки
- 3. Java: как импортировать файл jar из командной строки
- 4. Как использовать jar-файл в java-программе из командной строки?
- 5. Как запустить файлы jar из командной строки
- 6. Проблема с ошибкой Java и командной строки
- 7. Запуск исполняемого файла jar из командной строки
- 8. Проблема с чтением из файла
- 9. Создание ImageJ .jar из командной строки
- 10. Создать .jar файл из командной строки
- 11. Проблема с чтением из файла свойств
- 12. Проблема с чтением строки с запятой в
- 13. Java включает строку командной строки jar file
- 14. Параметры командной строки Java jar file
- 15. C - проблема с чтением из командной строки - присваивание делает указатель из целого без литья.
- 16. java компиляция из командной строки
- 17. Запуск Jar из командной строки: ClassNotFoundException
- 18. Невозможно запустить файл jar из командной строки
- 19. Проблема с чтением файла
- 20. Проблема с чтением STDIN
- 21. Java-код из командной строки
- 22. Держите JVM работает с JAR из командной строки
- 23. java проверить, запущен ли jar из командной строки или проводника
- 24. Выполнение команды командной строки из java для создания файла jar
- 25. Проблема с чтением строки и регулярным выражением
- 26. Проблема с чтением XML-файла в java?
- 27. Запуск архива jar в запущенном приложении Java
- 28. java - проблема с чтением/записью файла
- 29. работает junit из командной строки с файлом jar
- 30. Проблема с чтением rss
Запустите команду `jar tf` и опубликуйте результат. Вырезать и вставить точную командную строку, которую вы используете, и точное сообщение об ошибке, выводимое командой java. –
erickson
2008-11-15 22:22:13