Что такое исполняемый файл в java
Перейти к содержимому

Что такое исполняемый файл в java

  • автор:

Развертывание существующего исполняемого файла вручную

В Azure Service Fabric можно запустить как службу приложение любого типа, в том числе приложения Node.js, Java или C++. В Service Fabric такие типы служб называются гостевыми исполняемыми файлами.

Гостевые исполняемые файлы обрабатываются в Service Fabric как службы без отслеживания состояния. Это значит, что они будут размещены на узлах кластера на основе доступности и других метрик. В этой статье описывается, как упаковать и развернуть гостевой исполняемый файл в кластере Service Fabric, используя Visual Studio или служебную программу командной строки.

Кластер Service Fabric конструктивно представляет собой один клиент, в котором размещенные приложения считаются доверенными. Если вы собираетесь размещать недоверенные приложения, воспользуйтесь инструкцией из статьи Размещение ненадежных приложений в кластере Service Fabric.

Преимущества запуска гостевого исполняемого файла в Service Fabric

Запуск гостевого исполняемого файла в кластере Service Fabric имеет несколько преимуществ.

  • обеспечение высокой доступности; Каждый набор масштабирования помещает свои виртуальные машины в группу доступности с 5 доменами сбоя (FD) и 5 доменами обновления (UD) для обеспечения доступности (дополнительные сведения о доменах сбоя и обновления см. Приложения, работающие в среде Service Fabric, отличаются высоким уровнем доступности. Service Fabric обеспечивает выполнение экземпляров приложения.
  • Мониторинг исправности. Service Fabric наблюдает за работоспособностью приложений и в случае сбоя предоставляет диагностические данные.
  • Управление жизненным циклом приложений. Service Fabric не только обновляет приложения без ущерба для работы пользователей, но и автоматически откатывает приложение к предыдущей версии, если во время обновления возникло событие ухудшения работоспособности.
  • Плотность. В одном кластере могут работать несколько приложений, что позволяет отказаться от использования отдельного оборудования для каждого приложения.
  • Возможность обнаружения: с помощью REST можно вызвать службу именования Service Fabric для поиска других служб в кластере.

Примеры

  • Пример для упаковки и развертывания гостевого исполняемого файла
  • Пример двух гостевых исполняемых файлов (C# и Node.js), которые взаимодействуют через службу именования с помощью REST

Обзор файлов манифестов приложений и служб

При развертывании гостевого исполняемого файла рекомендуем ознакомиться с моделью развертывания и упаковки Service Fabric, которая описана в этой статье. Модель упаковки Service Fabric основана на двух XML-файлах — манифестах приложения и службы. Определение схемы для файла ApplicationManifest.xml и ServiceManifest.xml устанавливается с пакетом SDK в расположении C:\Program Files\Microsoft SDKs\Service Fabric\schemas\ServiceFabricServiceModel.xsd.

  • Манифест приложения. Этот манифест используется для описания приложения. В файле указаны службы, из которых состоит приложение, и другие параметры развертывания для одной или нескольких служб (например, число экземпляров). В Service Fabric приложение — это единица развертывания и обновления. Приложение может обновляться как одна единица, для которой выполняется управление потенциальными сбоями и откатами. Service Fabric гарантирует, что процесс обновления либо будет выполнен успешно, либо (в случае сбоя) не оставит приложение в неизвестном или нестабильном состоянии.
  • Манифест служб. Манифест служб описывает компоненты службы. В этом файле содержится такая информация, как имя и тип службы, ее код и конфигурация. Манифест службы также включает некоторые дополнительные параметры, которые могут использоваться для настройки службы после ее развертывания.

Структура файла пакета приложения

Чтобы развернуть приложение в Service Fabric, такое приложение должно соответствовать предопределенной структуре каталогов. Ниже приведен пример этой структуры.

|-- ApplicationPackageRoot |-- GuestService1Pkg |-- Code |-- existingapp.exe |-- Config |-- Settings.xml |-- Data |-- ServiceManifest.xml |-- ApplicationManifest.xml 

Каталог ApplicationPackageRoot содержит файл ApplicationManifest.xml, определяющий приложение. Дочерний каталог для каждой службы, включенной в приложение, используется для хранения всех артефактов, необходимых службе. Подкаталоги включают файл ServiceManifest.xml и, как правило, следующие каталоги:

  • Code. В этом каталоге содержится код службы.
  • Config. В этом каталоге хранится файл Settings.xml (а также другие файлы, если нужно), который служба может использовать в среде выполнения для извлечения определенных параметров конфигурации.
  • Данные. Здесь хранятся дополнительные локальные данные, которые могут потребоваться службе. Обратите внимание, что в этом каталоге могут храниться только временные данные. Service Fabric не копирует и не реплицирует изменения, внесенные в каталог Data, при перемещении службы (например, во время отработки отказа).

Если каталоги config и data вам не нужны, не создавайте их.

Дальнейшие действия

В приведенных ниже статьях описаны связанные сведения и задачи.

  • Развертывание гостевого исполняемого файла
  • Развертывание нескольких пользовательских приложений
  • Создание первого приложения в качестве гостевого исполняемого файла с помощью Visual Studio
  • Пример для упаковки и развертывания гостевого исполняемого файла, включая ссылку на предварительную версию средства упаковки
  • Пример двух гостевых исполняемых файлов (C# и Node.js), которые взаимодействуют через службу именования с помощью REST

исполняемый JAR-файл

Author24 — интернет-сервис помощи студентам

Создаю исполняемый файл:
jar cvfe prog.jar j413 *.java
При запуске программы командой:
java -jar prog.jar
и получаю ошибку:
Error: Could not find or load main class j413
В чем причина этой ошибки?

94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

Как в java создать исполн jar файл для выполнения с целью, что бы потом код этого jar нельзя было использовать
(Новичок) Добрый день. Подскажи пожалуйста, как быть. Как создать jar файл что бы потом его код.

Создать исполняемый файл
Добрый день, я новичок в Java, до этого изучал c++ & Qt, и не могу понять, как сделать аналог.

Не читается файл, лежащий в той же папке, что и jar-файл программы
Пытаюсь прочитать файл с настройками программы. public void loadSettingsFromFile(String fileName)

Как поместить текстовый файл в JAR-файл
Здравствуйте! Столкнулся со следующей проблемой. Читаю файл txt. Он у меня лежит в папке с.

92 / 92 / 18
Регистрация: 06.01.2012
Сообщений: 394

Файлы jar запускаются утилитой jar (попробуй, чот не уверен ) попробуй убрать расширение у исполняемого файла
java -jar prog

Регистрация: 21.07.2011
Сообщений: 89
В книге расширение .jar указано.
Без расширения другая ошибка:
Error: Unable to access jarfile prog
636 / 528 / 165
Регистрация: 01.04.2010
Сообщений: 1,843

ЦитатаСообщение от Konstantin_D Посмотреть сообщение

В чем причина этой ошибки?
Содержимое jar-ника? Манифест есть? Главный класс в нем правильно прописан?
Регистрация: 14.09.2011
Сообщений: 158
Записей в блоге: 1

Запуск в командной строке:
java -jar my_project_name.jar

2586 / 2259 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18

если в манифесте не прописан класс который содержит main, то его можно указать вручную

java -jar any.jar package_name.NameOfClass

в jar даже можно держать несколько классов с методом main и при запуске указывать нужный самому
Регистрация: 21.07.2011
Сообщений: 89

ЦитатаСообщение от aleksandy Посмотреть сообщение

Содержимое jar-ника? Манифест есть? Главный класс в нем правильно прописан?

Я создавал исполняемый файл командой:
jar cvfe prog.jar j413 *.java
В jar файле находился один файл j413.java и манифест.

На трезвую голову jar файл получил командой
jar cvfe prog.jar j413 *.class
(поменял *.java на *.class)
Теперь в jar файле находятся файлы:
j413$1.class, j413.class, MainFrame$1.class, MainFrame.class и MANIFEST.MF.
и программа запускается.

Содержание файла манифеста в обоих случаях одинаково:
Manifest-Version: 1.0
Created-By: 1.7.0_03 (Oracle Corporation)
Main-Class: j413

Вопрос:
1. Какие файлы нужно включать в исполняемый jar-файл и какой командой?
2. Чем просматривают содержимое jar-файлов?
Я пользовался WinRAR.

Создание исполняемого JAR файла с зависимостями с помощью Maven

Распространенной задачей при разработке приложений на языке Java является пакетирование проекта в один исполняемый JAR файл для дальнейшего распространения.

Алексей Кодов
Автор статьи
10 июля 2023 в 16:39

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

Один из способов решить эту задачу — использовать инструмент сборки проекта Maven. Представленная ниже инструкция поможет выполнить это.

Настройка pom.xml

Для начала необходимо настроить файл pom.xml проекта. В разделе добавляется , в котором указываются необходимые плагины. В данном случае это maven-assembly-plugin и maven-jar-plugin .

<build> <plugins> <plugin> <artifactId>maven-assembly-plugin</artifactId> <configuration> <archive> <manifest> <mainClass>com.example.MainClass</mainClass> </manifest> </archive> <descriptorRefs> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> </configuration> <executions> <execution> <id>make-assembly</id> <phase>package</phase> <goals> <goal>single</goal> </goals> </execution> </executions> </plugin> <plugin> <artifactId>maven-jar-plugin</artifactId> <configuration> <archive> <manifest> <addClasspath>true</addClasspath> <classpathPrefix>lib/</classpathPrefix> <mainClass>com.example.MainClass</mainClass> </manifest> </archive> </configuration> </plugin> </plugins> </build>

Важно заменить com.example.MainClass на полное имя класса с методом main() , который должен быть запущен при выполнении JAR.

Сборка JAR файла

После настройки pom.xml можно собрать JAR файл с помощью Maven. Для этого используется команда:

mvn clean compile assembly:single

В результате в директории target проекта будет создан исполняемый JAR файл с зависимостями.

Таким образом, с помощью Maven можно легко собрать исполняемый JAR файл, включающий в себя все необходимые зависимости проекта.

Не запускается исполняемый файл

Author24 — интернет-сервис помощи студентам

Сделал билд так: Project Structure—>Artifacts—>+—>JAR—>From Modules with dependencies—>Выбираю класс со статическим методом. Потом Build—> Build Artifacts
Запускаю собранный jar выдает ошибку
Error: A JNI error has occurred, please check your installation and try again.

94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

Исполняемый файл
Как создать исполняемый файл(.exe) из проекта в IntelliJ IDEA с JavaFX? Я пробовал через bulid.

Исполняемый файл java
Создал исполняемый файл из jar runnable. Руководствовался этой статьей.

Создать исполняемый файл
Добрый день, я новичок в Java, до этого изучал c++ & Qt, и не могу понять, как сделать аналог.

Эксперт Java

2526 / 1071 / 365
Регистрация: 11.08.2017
Сообщений: 3,264

В ide проект запускается? Версии и разрядности jdk в ide и jre в системе совпадают? Все ли зависимости упаковались в jar? Обычно jni ошибки бывают изза нативов например, либо нету либо не те (но дословно ошибки не помню), просто jni использует нативные библиотеки (на винде это dll) и некоторым библиотекам можно просто добавить в джарник а некоторым надо указать как параметр для запуска папку с нативами. Это если используются библиотеки. Если нету сторонних библиотек в проекте то не знаю.

Эксперт Java

2526 / 1071 / 365
Регистрация: 11.08.2017
Сообщений: 3,264

Сам столкнулся с похожей проблемой и нашел решение, все дело было в том что файл был скомпилирован в более новой jdk а у меня была старая, помог запуск в более новой версии. Узнать какая с помощью командной строки, там будет указана версия

Java 1.2 uses major version 46 Java 1.3 uses major version 47 Java 1.4 uses major version 48 Java 5 uses major version 49 Java 6 uses major version 50 Java 7 uses major version 51 Java 8 uses major version 52 Java 9 uses major version 53 Java 10 uses major version 54 Java 11 uses major version 55 Java 12 uses major version 56 Java 13 uses major version 57 Java 14 uses major version 58

Добавлено через 2 минуты
Например так:

Error: A JNI error has occurred, please check your installation and try again Exception in thread "main" java.lang.UnsupportedClassVersionError: LinesLauncher has been compiled by a more recent version of the Java Runtime (class file version 57.0), this version of the Java Runtime only recognizes class file versions up to 52.0 at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:756) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) at java.net.URLClassLoader.defineClass(URLClassLoader.java:468) at java.net.URLClassLoader.access$100(URLClassLoader.java:74) at java.net.URLClassLoader$1.run(URLClassLoader.java:369) at java.net.URLClassLoader$1.run(URLClassLoader.java:363) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:362) at java.lang.ClassLoader.loadClass(ClassLoader.java:418) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:355) at java.lang.ClassLoader.loadClass(ClassLoader.java:351) at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:495)

Это означает что джарник был собран в версии 57 (java 13) а там где попытка запуска поддерживает не выше 52 (java 8)

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *