Не удается запустить приложение Java в Vista Business - не удается найти основной класс. Программа завершится.

Я написал приложение с графическим интерфейсом пользователя Java (с использованием Netbeans 6.7), требующее Java 1.6. Я успешно запустил его на своем ПК с XP, а также на Mac OSX (10.5.7).

Мой клиент работает под управлением Vista Business и не может запустить приложение, дважды щелкнув файл jar. Он может выполнить его из командной строки: «javaw -jar ...» Полученная ошибка: «Не удается найти основной класс ... Программа завершится».

Я попросил клиента сделать следующее:

  • установить последнюю версию JRE
  • запустить JarFix

Я подтвердил, что:

  • JRE установлен в правильном месте
  • ассоциация файлов jar верна
  • приложение работает (поскольку я тестировал его на XP и Mac OSX, и клиент может запускать его из командной строки)

Есть идеи о том, что еще я могу исследовать? Обратите внимание: Netbeans создал основной файл jar, а также каталог lib с парой других файлов Jar. Я разархивировал jarfile и изучил файл манифеста (выглядит неплохо). Правильный основной класс также находится в файле jarfile приложения.

Нужно ли клиенту внимательно следить за тем, откуда запускается приложение в Vista?

Большое спасибо. Prembo


person Prembo    schedule 18.08.2009    source источник
comment
После небольшого расследования выясняется, что клиент не следовал инструкциям по установке. Оказывается, они пытались запустить jar-файл из zip-файла, который содержал приложение! Это меня научит! В любом случае спасибо за отличные предложения.   -  person Prembo    schedule 21.08.2009


Ответы (3)


Работает ли точно такой же файл JAR в других операционных системах?

Правильный ли файл манифеста (META-INF / MANIFEST.MF) в файле JAR? Следует обратить внимание на одну загвоздку: файл манифеста ДОЛЖЕН заканчиваться пустой строкой; в противном случае последняя строка в файле манифеста будет проигнорирована. Так, например, если последняя строка в вашем файле манифеста выглядит примерно так:

Main-Class: com.mypackage.MyProgram

и за ней не следует пустая строка, тогда Java проигнорирует строку и не сможет найти основной класс программы.

Подробную информацию см. В Руководстве Sun по Java по развертыванию программ Java в файлах JAR. подробности о том, как упаковать ваше приложение в JAR; он также содержит предупреждение о том, что файл манифеста должен заканчиваться пустой строкой.

Кроме того, еще раз проверьте, используется ли правильная версия Java. Вы используете ту же версию Java, что и в Windows XP? Пытаться:

java -version

чтобы узнать, какая версия Java используется.

person Jesper    schedule 18.08.2009
comment
Да - точный файл jar работает в Mac OSX, XP и из командной строки в Vista Business. Манифест был создан Netbeans, так что все в порядке. Я подтвердил, что последняя строка - это просто строка комментария, так что это не проблема. Версии Java разные, но я пробовал разные версии 1.6.x, и все подходят для разных ОС (кроме Vista Business, конечно). - person Prembo; 18.08.2009

Я использую Vista Enterprise, и у меня очень мало различий между ней и другими версиями Windows (что касается Java).

Вот несколько случайных идей, которые могут сработать, а могут и не сработать:

  • Вы пробовали: щелкнуть правой кнопкой мыши на Jar -> Открыть с помощью -> Java (TM) Platform SE Binary
  • Может быть, это связано с разрешениями? (вероятно, нет, поскольку он запускается через командную строку)
  • Вы пробовали это с отключенным UAC? (UAC использует Java-приложения в песочнице, и они не могут писать в определенные места, такие как Program Files)
  • Вы убедились, что у них те же файлы, что и у вас в JAVA_HOME / lib / ext /
  • you could try setting environment variables:
    • JAVA_HOME=<your_java_home>
    • КЛАСС =.
    • PATH = ‹your_java_home› \ bin
person Brad Cupit    schedule 18.08.2009
comment
Спасибо за ваши предложения. Я займусь расследованием. - person Prembo; 19.08.2009

Иногда JDK необходимо установить отдельно вместе с IDE net beans. Если у вас установлен jdk, вы можете попробовать проверить путь к классам, путь в переменных среды.

person Community    schedule 26.08.2009