Nano Hash - криптовалюты, майнинг, программирование

Файл JAR: не удалось найти основной класс

Ладно, у меня странная проблема. Я хотел запустить одну из своих программ в виде файла .jar, но когда я открываю его, дважды щелкнув по нему, я получаю сообщение об ошибке, например «Не удалось найти основной класс, программа закрывается». Я почти уверен, что все сделал правильно, банка должна работать. Пробовал и другие программы, со всеми так. (Я создаю .jar через BlueJ). Нет проблем, когда я запускаю их через .bat . И вот самое странное: файлы .jar работали какое-то время назад (один или два месяца, я думаю), и я не помню, чтобы делал что-то другое. Это та же BlueJ-версия. Ладно, может Java обновился и что-то напутал... Погуглил, но решения не нашел. (Кажется, у некоторых людей есть похожая проблема, и кажется, что только они не могут запустить свои .jar; они загрузили их, а другие люди говорят, что .jar работает нормально.) В чем может быть проблема? Как я могу это решить?

Я был бы очень признателен за помощь здесь. Спасибо :)

ДиафрагмаT3CH

РЕДАКТИРОВАТЬ: хорошо, ребята, вы делаете меня неуверенным здесь. Имма снова проверит манифест, в это нечестивое время (1:34) :P

EDIT2: это мой MANIFEST.MF Версия манифеста: 1.0 Путь к классу: Основной класс: LocalChatClientGUI [пустая строка] [пустая строка]

Основной класс правильный.

EDIT3: благодаря hgrey: с банкой все в порядке. Я могу запустить его из bat-файла, что на самом деле не должно отличаться от двойного щелчка по банке, верно? Тем не менее, я получаю ошибку при нажатии на нее, и она отлично работает через летучую мышь.

EDIT4: я наконец решил проблему. Я переустановил JRE, и теперь он работает, хотя я не вижу различий в версиях.

Спасибо всем!

13.04.2012

Ответы:


1

Когда java запускает jar, он просматривает файл manifest.mf внутри каталога jar META-INF и читает там атрибут MainClass. Если он не указан, вы получите описанное вами сообщение. Итак, попробуйте включить в банку правильный manifest.mf. Генерация manifest.mf поддерживается популярными инструментами сборки Java, такими как Ant или Maven.

13.04.2012
  • Я проверил этот манифест, и это хорошо, указан правильный основной класс. 14.04.2012
  • Можете ли вы попробовать запустить его с помощью java -jar jarfilename и опубликовать здесь исключение, если вы его получите, вместе с содержимым файла манифеста? 14.04.2012
  • что за... Это работает... Понятия не имею, почему. Но это нормально выполняет банку... У меня нет идей 14.04.2012
  • Вероятно, ваша ассоциация расширений облажалась. Попробуйте изменить это на тот же java, который у вас есть в пути. Вы можете сделать это с помощью проводника на окнах. 14.04.2012
  • Это возможно .. В последнее время мой компьютер часто дает сбои, может быть, это как-то испортило расширение файла. Спасибо, завтра попробую. 14.04.2012
  • Я установил его на Java.exe в каталоге path для java, ничего не изменилось. Я также пробовал jar.exe, но это дело cmdline/batch, поэтому оно тоже не сработало. Любые другие предложения? 14.04.2012
  • @ApertureT3CH: Это плохой ход. Просит решения и не делится им с нами... 17.01.2019

  • 2

    Использует ли ваша программа какие-либо внешние файлы jar? Если это так, вам нужно установить атрибут classpath внутри файла манифеста, а также основной класс.

    14.04.2012
  • примечание: если приложение использует jar-файлы (например, lib/), а некоторые из них отсутствуют (или имеют неправильную версию), эта ошибка также может произойти (независимо от пути к классам). 23.04.2019

  • 3

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

    13.04.2012

    4

    Предложите проверить ваш манифест.

    http://docs.oracle.com/javase/tutorial/deployment/jar/appman.html

    13.04.2012

    5

    Также добавьте атрибут classpath в манифест и поставьте точку для значения. Это скажет виртуальной машине искать классы в текущем каталоге.

    30.07.2013

    6

    Текстовый файл манифеста должен заканчиваться новой строкой или возвратом каретки. Последняя строка не будет проанализирована должным образом, если она не заканчивается новой строкой или возвратом каретки.

    03.09.2012
  • Какие? Файл jar не является текстовым файлом. Ты про манифест? 22.09.2012
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..